【问题标题】:Why pub sub in redis cannot be used together with other commands?为什么redis中的pub sub不能和其他命令一起使用?
【发布时间】:2015-11-29 20:53:40
【问题描述】:

我正在阅读 here,我看到一条警告,指出 Redis 中的 PUB/SUB 订阅者不应发出其他命令:

订阅一个或多个频道的客户端不应发出命令, 虽然它可以订阅和取消订阅其他频道。

我有两个问题:

  • 为什么会有这个限制?
  • 对于本段的范围,什么是客户?一个完整的过程? Redis 连接?一个完整的 Redis 实例?还是一般来说,发出命令和订阅频道是个坏主意,而且我能想到的所有范围都受到警告?

【问题讨论】:

    标签: redis


    【解决方案1】:

    在这种情况下,客户端是与 Redis 的连接的一个实例。一个应用程序很可能有多个客户端,每个客户端都有不同的职责,或者作为为应用程序提供更高程度的并行性的一种方式。

    然而,他们在这里的建议是,您使用单个客户端(想想“连接”)来处理传入的订阅消息并作为其唯一责任对这些消息作出反应。建议不要使用此连接进行调用的原因是,当它等待来自订阅频道的传入消息时,客户端处于阻塞状态。

    在等待来自阻塞调用的响应时,尝试在给定客户端上进行调用是行不通的。

    【讨论】:

    • 谢谢!这听起来很合理。
    • 为了完整起见,来自 SUBSCRIBEr 连接的唯一命令是:SUBSCRIBEPSUBSCRIBEUNSUBSCRIBEPUNSUBSCRIBEPINGQUIT(公关: github.com/antirez/redis-doc/pull/642 ;))
    猜你喜欢
    • 2014-07-06
    • 2011-06-23
    • 2020-01-20
    • 1970-01-01
    • 2011-11-10
    • 2015-09-10
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    相关资源
    最近更新 更多