当使用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/