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

kmynzznz  于 12个月前  发布在  Redis
关注(0)|答案(3)|浏览(192)

有人问我什么是PubSub以及如何创建一个频道(在我的回答的评论中),我向他指出了redis.io => http://redis.io/topics/pubsub上的文章。我认为这很清楚,但我想知道是否有人有更好的解释。理想情况下,使用redis-cli清楚地描述它。

vmjh9lq9

vmjh9lq91#

发布/订阅是一个非常简单的范例。把它想象成你在广播电台上运行一个脱口秀节目。这就是发布。你希望至少有一个或多个人会拿起你的频道来收听你在广播节目中的消息(订阅),甚至可能做一些事情,但你并没有直接与人们交谈。
让我们一起来玩Redis吧!

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-browser(或者更有趣的时候让朋友打开他们的redis-browser并连接到你的服务器)并订阅频道:

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


回到你原来的网站,继续你的节目:

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!"


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

lxkprmvk

lxkprmvk2#

作为Aashay Desai提供的答案的补充,我想声明我在这里着陆,搜索确切的部分:
如何创建一个频道
我一直在问自己从哪里获得可以用于PUBLISH的通道的名称。没有来源说明,您所指的通道是在PUBLISH-语句中使用的通道。
需要明确的是:通过使用PUBLISH语句,您正在创建通道
保持上面的例子:

PUBLISH myradioshow "Next caller gets a free loaf of bread!"

字符串
你发布到频道“myradioshow”,你也在这个确切的时刻创建。这是完全取决于你如何命名它。
对于一个更有经验的开发人员来说,这可能是一个自我解释的事情,但从初学者的Angular 来看,即使在这里回答这个问题10年后,我也没有偶然发现一个明确说明这一点的源代码/文档。

mwg9r5ms

mwg9r5ms3#

通过命令创建通道

SUBSCRIBE channel_name

字符串
列出所有通道

pubsub channels

相关问题