回答
可以提供服务。
Redis Cluster 扩容、缩容的本质其实是 slot 的迁移。在 slot
迁移过程,如果客户端给当前 Redis 节点发送请求,则有两种情况:
- 如果该 key 所对应的
slot
还在当前 Redis 节点,则直接处理,并返回处理结果。 - 如果该 key 所对应的
slot
还在迁移过程中,则该节点返回一个 ASK 重定向错误,告诉客户端该请求对应的 slot 正在进行迁移,请去目标节点发送请求吧。客户端接受 ASK 响应后,则先向目标节点发送一个 ASKING 指令,告诉目标节点,接下来的这条指令,你必须执行,然后紧接着发送原请求。 - 如果该 key 所对应的
slot
不在当前 Redis 节点,或者已经被迁移到其他目标节点了,则该节点返回一个 MOVED 重定向错误,客户端接受响应后,直接向目标节点发送指令即可,同时会更新客户端的slot
缓存
关于 Redis Cluster 扩容、缩容详情请阅读:Redis Cluster 是如何进行分片的?
关于 ASK 重定向、MOVED 重定向详情请阅读:在 Redis Cluster 中,客户端请求是如何在集群中路由的?