前々回からご紹介しているredisですが、KVS型のDBとしての機能のほかに、もう一つredisが備えている機能があります。
メッセージ配信の仕組みである”Pub/Sub”をredisクライアント間でできる機能です。
Pub/Subとは、メッセージを受信したいユーザーが特定のチャネルを購読(Subscribe)し、配信側はそのチャンネルに対してメッセージを一斉配信(Publish)することで購読側はメッセージを受け取るという仕組みです。
Pub/Subをするために、必ずしもredisを使用する必要はありませんが、自分で実装するとそこそこ大変なのでredisのような既存の仕組みで利用できるのはとてもありがたいです。
今回はredisのPub/Sub機能を実際に試してみたいと思います。
まず、redis-cliクライアントを2つ立ち上げておきます。
片側のredis-cliで、下記のようなコマンドを実行します。
subscribe チャネル名
subscribeしたクライアントは、待機状態になります。
なお、subscribeしている間は他のredisコマンドは実行できなくなるので注意してください。
この状態で、今度はもう片側のredis-cliで下記のようにコマンドを実行します。
publish チャネル名 メッセージ
すると、先程subscribeした側のredis-cliにpublishされたメッセージがリアルタイムで受信されます。
前々回にご紹介した、redisをリモートから接続できるようにしておけば、ネットワーク経由でも送ることができます。
複数クライアントもばっちりです。
redis単体でここまでできるので、あとはプログラムとredisをつないでWebsocketあたりを使えば、簡単にリアルタイムチャットなども実装できそうですね。
・前の記事
redisを触ってみる 基本操作編