前々回からご紹介している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コマンドは実行できなくなるので注意してください。
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/09/edad7648d16176b7302465e2974a0eba.png)
この状態で、今度はもう片側のredis-cliで下記のようにコマンドを実行します。
publish チャネル名 メッセージ
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/09/be0a88c153cae095153291d6ee2fddb0.png)
すると、先程subscribeした側のredis-cliにpublishされたメッセージがリアルタイムで受信されます。
![](https://cpoint-lab.co.jp/wp-content/uploads/2019/09/2c16dc99e21552df383bddb15956f2dd.png)
前々回にご紹介した、redisをリモートから接続できるようにしておけば、ネットワーク経由でも送ることができます。
![](https://i0.wp.com/cpoint-lab.co.jp/wp-content/uploads/2019/09/image-2.png?fit=1024%2C123&ssl=1)
複数クライアントもばっちりです。
redis単体でここまでできるので、あとはプログラムとredisをつないでWebsocketあたりを使えば、簡単にリアルタイムチャットなども実装できそうですね。
・前の記事
redisを触ってみる 基本操作編