为什么redis中的pub sub不能与其他命令一起使用?

dsi*_*ign 5 redis

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

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

我有两个问题:

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

Dar*_*cks 6

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

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

在等待阻塞呼叫的响应时,尝试在给定客户端上进行呼叫将无法进行。