1.redis集群一共有16384个虚拟slot,被均匀分配到集群里所有redis机器node上;
2.每个node之间可以互相meet操作,都知道彼此slot范围;
3.客户端向redis集群任意node发送命令,相应node使用CRC16加hash算法算出slot,如果slot命中,则返回成功影响,否则返回moved命令和正确的node号;
4.客户端收到moved命令,去目标node读写。
redis集群客户端向目标node发送命令,而此时slot的数据已经发生迁移,则目标node就会发回ask重定向响应。
如图所示,source部分数据已经迁移到target,客户端向source发送命令,source发现slot数据已经迁移到target,就会返回给客户端ask重定向,客户端向target发送asking命令,target返回结果。