2012年11月11日日曜日

redisってなんじゃ?(pub/sub編)


redisにはpub/subという機能があります。

これはpublish/subscribeパターンという仕組みの実装で、発行者と購読者という役割でメッセージの配信を行うものです。

では、redisのコンソールを使って試してみたいと思います。

redis1とredis2という2つのホストを使用します。
redis1ではローカルホストでredis-cliに接続します。
redis2ではredis1のredis-clに接続します。

redis1
# redis-cliredis 127.0.0.1:6379>

redis2
# redis-cli -h 10.0.0.200redis 10.0.0.200:6379>

メッセージの購読はチャンネル名を指定します。
redis2でgreetingというチャンネル名でsubscribeコマンドを実行します。

redis2
redis 10.0.0.200:6379> subscribe greeting
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "greeting"
3) (integer) 1

こうすることによって、redis2はredis1のgreetingというチャンネルのメッセージの待ち受けが始まります。

続いて、redis1でメッセージを発行します。
greetingというチャンネルで「Hello World!」という内容のメッセージを発行します。

redis1
redis 127.0.0.1:6379> publish greeting "Hello World!"
(integer) 1
redis 127.0.0.1:6379>

すると即座にredis2のクライアントにHello Worldというメッセージが受信されたことがわかります。

redis2
redis 10.0.0.200:6379> subscribe greeting
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "greeting"
3) (integer) 1
1) "message"
2) "greeting"
3) "Hello World!"

このように、redisでは他のサーバーのredisクライアントとメッセージのやりとりが可能です。
クライアントコンソールでは効能がわかりにくいので、次回はアプリケーションレベルで試してみたいと思います。

以上です。