当使用ioredis(https://github.com/luin/ioredis)连接到Redis集群时,您只需要指定一个节点即可,例如三节点集群

127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002

您可以简单地使用以下方法进行连接:

new Redis.Cluster([{
  port: 7000,
  host: '127.0.0.1'
}])

如果:7000节点死亡,而您将其替换为其他节点,请执行以下操作:
redis-trib.rb call 127.0.0.1:7001 cluster forget [node_id of :7000]
redis-trib.rb add-node 127.0.0.1:7003 127.0.0.1:7001
redis-trib.rb fix 127.0.0.1:7001

ioredis是否能够继续工作(接受来自:7000的数据丢失),是否需要再次联系127.0.0.1:7000还是仅用于初始连接?

从我的实验看来,这种情况确实可行,并且我的问题的答案是肯定的,但是我想检查一下这是预期的情况,还是受支持的情况。

最佳答案

连接到群集时,ioredis会向:7000询问群集的节点列表,然后ioredis能够发现新节点并处理故障转移。因此,如果:7000在获取节点列表后死亡,答案是肯定的。

关于redis - 如果初始连接中的群集节点死亡,ioredis客户端可以继续工作吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46586053/

10-15 09:56