Can ioredis client continue working if a cluster node from the initial connection dies?
当使用ioredis(https://github.com/luin/ioredis)连接到Redis集群时,您只需要指定一个节点即可,例如具有三个节点的集群
127.0.0.1:7000
127.0.0.1:7001
127.0.0.1:7002
您可以使用以下简单方式进行连接:
1 2 3 4 | new Redis.Cluster([{ port: 7000, host: '127.0.0.1' }]) |
如果:7000节点死亡,而您将其替换为另一个节点,请执行以下操作:
1 2 3 | 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在获取节点列表后死亡,答案是肯定的。