【发布时间】:2015-11-29 20:53:40
【问题描述】:
我正在阅读 here,我看到一条警告,指出 Redis 中的 PUB/SUB 订阅者不应发出其他命令:
订阅一个或多个频道的客户端不应发出命令, 虽然它可以订阅和取消订阅其他频道。
我有两个问题:
- 为什么会有这个限制?
- 对于本段的范围,什么是客户?一个完整的过程? Redis 连接?一个完整的 Redis 实例?还是一般来说,发出命令和订阅频道是个坏主意,而且我能想到的所有范围都受到警告?
【问题讨论】:
标签: redis
我正在阅读 here,我看到一条警告,指出 Redis 中的 PUB/SUB 订阅者不应发出其他命令:
订阅一个或多个频道的客户端不应发出命令, 虽然它可以订阅和取消订阅其他频道。
我有两个问题:
【问题讨论】:
标签: redis
在这种情况下,客户端是与 Redis 的连接的一个实例。一个应用程序很可能有多个客户端,每个客户端都有不同的职责,或者作为为应用程序提供更高程度的并行性的一种方式。
然而,他们在这里的建议是,您使用单个客户端(想想“连接”)来处理传入的订阅消息并作为其唯一责任对这些消息作出反应。建议不要使用此连接进行调用的原因是,当它等待来自订阅频道的传入消息时,客户端处于阻塞状态。
在等待来自阻塞调用的响应时,尝试在给定客户端上进行调用是行不通的。
【讨论】:
SUBSCRIBE、PSUBSCRIBE、UNSUBSCRIBE、PUNSUBSCRIBE、PING 和 QUIT(公关: github.com/antirez/redis-doc/pull/642 ;))