NoSQL前々回からご紹介している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している間は他のredisコマンドは実行できなくなるので注意してください。この状態で、今度はもう片側のredis-cliで下記のようにコマンドを実行します。メッセージすると、先程subscribeした側のredis-cliにpublishされたメッセージがリアルタイムで受信されます。前々回にご紹介した、redisをリモートから接続できるようにしておけば、ネットワーク経由でも送ることができます。複数クライアントもばっちりです。redis単体でここまでできるので、あとはプログラムとredisをつないでWebsocketあたりを使えば、簡単にリアルタイムチャットなども実装できそうですね。