【问题标题】:What is Redis pubsub and how do I use it?什么是 Redis pubsub 以及如何使用它?
【发布时间】:2011-09-23 03:55:17
【问题描述】:

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

【问题讨论】:

    标签: redis publish-subscribe


    【解决方案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!"
    

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

    【讨论】:

    • 为什么订阅者收到“subscribe”和“myradioshow”作为消息,而不是“大家早上好!”等等?
    • 那些只是从 Redis 以批量响应的形式返回的确认消息,告诉你它做了什么以及它订阅了什么,1 表示响应成功。见这里:redis.io/commands/subscribe。在我的示例中,订阅发生在初始消息发布之后,因此他们不会收到“大家早上好!”等等,因为这些消息已经消失了。换句话说,SUBSCRIBE 只接收在订阅 之后发布的已发布消息(也就是说,它不是一个队列)。
    • @AashayDesai 一个常见的场景,当人们想要/需要使用发布和订阅时会有帮助
    猜你喜欢
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2022-01-10
    • 2015-03-13
    • 2013-10-25
    • 2014-11-19
    • 1970-01-01
    相关资源
    最近更新 更多