如果初始连接中的集群节点死亡,ioredis客户端是否可以继续工作?

时间:2017-10-05 12:50:00

标签: redis redis-cluster ioredis

使用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或仅用于初始连接?

从我的实验中看来,这个场景似乎有效并且我的问题的答案是肯定的,但我想检查这是否是预期的并且是受支持的情况。

1 个答案:

答案 0 :(得分:2)

当连接到群集时,ioredis将询问:7000以获取群集的节点列表,之后ioredis能够发现新节点并处理故障转移。所以,如果:<7000>在提取节点列表后死亡,答案是肯定的。