2024-05-02
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/5073352009

回答

可以提供服务。

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 中,客户端请求是如何在集群中路由的?