什么是Redis pubsub以及如何使用它?

什么是Redis pubsub以及如何使用它?,redis,publish-subscribe,Redis,Publish Subscribe,有人问我什么是PubSub以及如何创建一个频道(在评论中),我给他指了指redis.io=>上的文章。我认为这很清楚,但我想知道是否有人有更好的解释。理想情况下,使用rediscli发布/订阅是一个非常简单的范例,可以清楚地描述它。想象一下,就像你在电台主持脱口秀一样。那是出版。你希望至少有一个或更多的人会拿起你的频道收听你在广播节目(订阅)上的信息,甚至可能做一些事情,但你不是直接与人们交谈 让我们一起享受redis cli带来的乐趣吧 redis 127.0.0.1:6379> PUB

有人问我什么是PubSub以及如何创建一个频道(在评论中),我给他指了指redis.io=>上的文章。我认为这很清楚,但我想知道是否有人有更好的解释。理想情况下,使用
rediscli

发布/订阅是一个非常简单的范例,可以清楚地描述它。想象一下,就像你在电台主持脱口秀一样。那是出版。你希望至少有一个或更多的人会拿起你的频道收听你在广播节目(订阅)上的信息,甚至可能做一些事情,但你不是直接与人们交谈

让我们一起享受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!"

当然,在现实中,你可能会想做一些比告诉你的客户你没有裤子的生活方式更有用的事情,比如在你的服务器上启动事件或运行某种任务/作业。也许不会吧!:)

为什么订阅者收到的是“订阅”和“myradioshow”,而不是“大家早上好!”等消息?这些只是以批量响应形式从Redis返回的确认消息,告诉您它做了什么以及订阅了什么,1表示响应成功。请参见此处:。在我的示例中,订阅发生在初始消息发布之后,因此它们不会收到“大家早上好!”等消息,因为这些消息已经不存在了。换句话说,订阅只接收在订阅之后发布的已发布消息(因此,换句话说,它不是队列)。@AashayDesai如果想要/需要使用publish&SUBSCRIBE,一个常见的场景会很有帮助