Redis Cluster 怎样分配数据?扩容时怎样迁移?
先自己想一想,再看参考要点
参考要点
- 键空间分为 16384 个哈希槽,CRC16(key) % 16384 计算键所属的槽,每个主节点负责一部分槽
- 访问了不负责这个槽的节点会收到 MOVED 重定向,客户端缓存槽映射
- 多键命令要求键在同一个槽,可以用 {} 哈希标签
- 扩容时按键迁移槽:源节点标记 MIGRATING、目标节点标记 IMPORTING,用 MIGRATE 分批搬键,已迁走的键返回 ASK,客户端先发 ASKING 再访问目标节点,全部迁完后用 CLUSTER SETSLOT 把槽分给新节点