【问题标题】:How to issue "subscribe" command after entered the "pub/sub" mode?进入“发布/订阅”模式后如何发出“订阅”命令?
【发布时间】:2012-11-20 15:21:51
【问题描述】:

使用 redis-cli 进入“发布/订阅”模式后,我找不到任何订阅其他频道的方法。例如:

$ redis-cli
redis> SUBSCRIBE channel:1
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "channel:1"
3) (integer) 1

当我按下 Ctrl-C 时,redis-cli 退出而不是“pub/sub”模式。有谁知道如何解决这个问题?

【问题讨论】:

    标签: redis publish-subscribe


    【解决方案1】:

    实际上,SUBSCRIBEPSUBSCRIBE 都会阻止所有后续命令,因此您无法将任何订单发送到服务器,而是将您的热切目光投向等待您感兴趣的频道接收消息。好吧,这种荒谬的行为也让我头晕目眩。 但是,如果您尝试通过 telnet telnet localhost 6379 而不是 redis-cli 的方式访问 redis。一切都会变好。请检查一下。

    【讨论】:

    • -ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / QUIT allowed in this context
    【解决方案2】:

    AFAIK,订阅频道后,您无法在 redis-cli 中发出新命令。但是,SUBSCRIBE 命令从 2.4 版本开始是可变参数,这意味着您可以一次通过多个频道来订阅:

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

    【讨论】:

    • 如果我想在 redis-cli 中的 SUBSCRIBE 命令后取消订阅频道怎么办?
    【解决方案3】:

    redis-cli的问题,不是Redis的问题

    Redis 表示我们允许在发出SUBSCRIBE 后发出SUBSCRIBEs。但是,redis-cli阻止所有内容。

    因此,正如@user1611552 所建议的,我们可以使用

    telnet localhost 6379
    

    而不是redis-cli,一切都会好起来的。

    【讨论】:

      猜你喜欢
      • 2016-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 2012-07-01
      • 2016-07-03
      相关资源
      最近更新 更多