【发布时间】:2011-09-23 03:55:17
【问题描述】:
有人问我 PubSub 是什么以及如何创建频道(来自 my answer 的评论),我将他指向 redis.io 上的文章 => http://redis.io/topics/pubsub。我认为这很清楚,但我想知道是否有人有更好的解释。理想情况下,使用redis-cli 清楚地描述它。
【问题讨论】:
有人问我 PubSub 是什么以及如何创建频道(来自 my answer 的评论),我将他指向 redis.io 上的文章 => http://redis.io/topics/pubsub。我认为这很清楚,但我想知道是否有人有更好的解释。理想情况下,使用redis-cli 清楚地描述它。
【问题讨论】:
发布/订阅是一个非常简单的范例。把它想象成你在广播电台上运行脱口秀节目。那是发布。您希望至少有一个或多个人会选择您的频道来收听您在广播节目 (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!"
当然,实际上,您可能想做一些比告诉客户您的无裤生活方式更有用的事情,例如在您的服务器上触发事件或运行某种任务/作业。也许不是! :)
【讨论】: