集群中的Redis PubSub消息顺序不保证?

集群中的Redis PubSub消息顺序不保证?,redis,Redis,redis集群中pubsub消息的消息顺序是否有任何保证 我们使用的Redis集群(v3.2.8)有5个主节点,每个节点连接一个从节点&我们注意到,当发布到一个特定通道的一个特定主节点并订阅该通道的从节点时,有时会以错误的顺序获取pubsub消息 我在redis.io或redis github repo上的集群中找不到任何与pubsub消息顺序相关的语句。首先,如果您使用的是PUBLISH,那么它将被阻止,并且仅在消息传递后返回,因此是的,顺序是有保证的 我看到了两种有问题的情况:管道和客户端断

redis集群中pubsub消息的消息顺序是否有任何保证

我们使用的Redis集群(v3.2.8)有5个主节点,每个节点连接一个从节点&我们注意到,当发布到一个特定通道的一个特定主节点并订阅该通道的从节点时,有时会以错误的顺序获取pubsub消息


我在redis.io或redis github repo上的集群中找不到任何与pubsub消息顺序相关的语句。

首先,如果您使用的是PUBLISH,那么它将被阻止,并且仅在消息传递后返回,因此是的,顺序是有保证的

我看到了两种有问题的情况:管道和客户端断开连接

流水线 从

当客户端使用管道发送命令时,服务器将被迫使用内存对回复进行排队

因此,如果使用队列,则应该保证顺序

客户端断开 我在文档中找不到它,但是如果在消息发布时客户端没有连接或订阅,那么它将不会收到任何东西。因此,在这种情况下,没有任何保证


如果您需要保留邮件,则应使用a列表。

谢谢您的回复。我们没有使用管道,也没有注意到断开连接。此外,断开连接只会导致消息丢失,而不会导致消息无序。wrt>仅在消息传递后返回。我认为只有当subscribe命令和publish命令被发送到同一个节点时,这才可能是正确的。否则,节点将需要等待,直到集群中的所有节点将消息传递给其所有连接的客户端。“需要等待”是的,这正是发生的情况。这就是为什么您可以选择使用流水线命令来加快处理速度的原因。我的观点是@sebuseba发现了一些有意义的东西,但这不是一个确定的答案。最好将此讨论转移到邮件列表或在回购协议中打开一个问题。感谢您的提示@ItamarHaber,我在回购协议中打开了。是的,看到了;)