web-dev-qa-db-ja.com

Redis pubsubとは何ですか?どのように使用しますか?

誰かから、PubSubとは何か、チャンネルの作成方法( 私の回答 のコメント)が尋ねられ、redis.io => http://redis.ioに関する記事を紹介しました。/topics/pubsub 。かなりはっきりしていると思いますが、誰かがもっといい説明をしてくれるかな。理想的には、redis-cli

37
Alfred

パブリッシュ/サブスクライブはかなり単純なパラダイムです。あなたがラジオ局でトークショーを実行しているようにそれを考えてください。それが公開です。少なくとも1人以上の人があなたのチャンネルをピックアップして、ラジオ番組(SUBSCRIBE)であなたのメッセージを聞き、おそらく何かをすることさえ望んでいますが、人々と話をしていません直接

Redis-cliで楽しみましょう!

redis 127.0.0.1:6379> PUBLISH myradioshow "Good morning everyone!"
(integer) 0
redis 127.0.0.1:6379> PUBLISH myradioshow "How ya'll doin tonight?"
(integer) 0
redis 127.0.0.1:6379> PUBLISH myradioshow "Hello? Is anyone listening? I'm not wearing pants."
(integer) 0

「myradioshow」チャネルでメッセージを受信して​​いるクライアントがないことに注意してください(応答では0です)。誰も聞いていません。次に、別のredis-cliを開いて(またはもっと楽しい時間を過ごすには、友達にredis-cliを開いてサーバーに接続してもらいます)、チャンネルに登録します。

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

元のredis-cliに戻り、ショーを続行します。

redis 127.0.0.1:6379> PUBLISH myradioshow "Next caller gets a free loaf of bread!"
(integer) 1

最後の「1」に注目してください。リスナーがいます!魔法のように、SUBSCRIBE-dターミナルで:

1) "message"
2) "myradioshow"
3) "Next caller gets a free loaf of bread!"

もちろん、実際には、おそらく、サーバーでイベントを発生させたり、ある種のタスクやジョブを実行したりするなど、ズボンのないライフスタイルについてクライアントに伝えるよりも役立つことをしたいと思うでしょう。多分そうでもない! :)

91
Aashay Desai