DRYな備忘録

Don't Repeat Yourself.

3分でRedisのpub/subを使ってみる【redis】

pub/sub

 オンメモリのKVSでありながら、なおかつディスクに永続化する機能も持つRedisですが、あるクライアントプロセスから別のクライアントプロセスへ通知を送る、いわゆる「pub/sub」も提供しています。

「pub/sub」とは「publish」と「subscribe」の略で、日本語訳するなら「発行」と「購読」。あるチャンネルに誰かがイベントを「発行」すると、そのチャンネルを「購読」している人すべてにそのイベントが通知される、といった意味。

ゴール

  • 3分でredisのpub/subを体験してみる

redisのインストールなどは MacにRedisをインストールしてことはじめ【redis】【MacOS】 - DRYな備忘録をご参考。

登場人物

  • redisサーバプロセス
  • redisクライアントプロセス その1
  • redisクライアントプロセス その2

で、クライアントその1がSUBSCRIBEしてるチャンネルにクライアントその2からPUBLISHしてみる

まずサーバを立ち上げます

% redis-server

おわり

クライアントその1でSUBSCRIBE

別のターミナルで

% redis-cli

で、こうなるので

% redis-cli
127.0.0.1:6379>
127.0.0.1:6379> SUBSCRIBE my_channel
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "my_channel"
3) (integer) 1

これでおしまい。my_channelと名付けたチャンネルを「購読」できている状態です。

クライアントその2でPUBLISH

さらに別のターミナルで

% redis-cli
127.0.0.1:6379> 
127.0.0.1:6379> PUBLISH my_channel "Hello! This is clientB"
(integer) 1
127.0.0.1:6379>

とすると…

結果こうなる

f:id:otiai10:20140504111355p:plain

もっとくわしく

複数のチャンネルを、チャンネル名のパターンマッチでsubscribeできたりするみたい

雑感

 コードを読むのが苦手な僕は「もうたくさん書くしかねえな」と腹を括ったわけだけど、その成果がだんだんと表出してきて、最近はドキュメントとか他人が書いたコードも読めるようになってきた。たぶん知識が糞不足してるときに何かを読んでも意味が薄くて、そこそこ自分に知見が溜まってからじゃないといけないんだろうなと思った。

 それにしても有意義なゴールデンウィークを過ごしている

DRYな備忘録

Redis入門 インメモリKVSによる高速データ管理

Redis入門 インメモリKVSによる高速データ管理