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

时间:2017-07-13 08:56:55

标签: redis

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

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

我在redis.io上的 cluster 和redis-github repo上找不到与 pubsub消息顺序相关的任何声明。

1 个答案:

答案 0 :(得分:0)

首先,如果你正在使用PUBLISH,那么它就是阻塞并且仅在消息传递后返回,所以是的,订单是有保证的。

我看到有两个有问题的案例:流水线和客户端断开连接。

流水线

来自documentation

  

当客户端使用流水线发送命令时,服务器将被强制使用内存对回复进行排队。

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

客户端断开连接

我在文档中找不到它,但如果在发布消息时没有连接或订阅客户端,那么它将不会收到任何内容。所以在这种情况下,没有保证。

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