首页/数据/Redis 进阶速查/Redis Cluster 与 16384 槽位

Redis Cluster 与 16384 槽位

集群把键空间划分为 16384 个槽(slot),每个主节点负责一部分槽;键经 CRC16 取模映射到槽,槽在节点间迁移实现扩容与缩容。

Redis 进阶速查数据更新于 2026-10-13

Cluster 是什么

Redis Cluster 是官方的分布式分片方案:把整个键空间切成 16384 个槽(slot),每个主节点负责其中一部分,键名经 CRC16 计算后对 16384 取模落到某个槽上,客户端据此把请求发到对应节点。节点之间用二进制协议互相交换状态,实现槽归属协商、故障检测与自动主从切换。相比客户端分片或代理分片,它把分片规则内置进服务端,扩容缩容通过迁移槽完成。

基本信息

槽总数16384 个,编号 0 到 16383
路由算法CRC16(key) mod 16384,键名含 {} 时只算标签内容
最小拓扑3 主 3 从:主节点投票需要多数派
端口数据端口 p,集群总线端口通常为 p+10000
数据库仅 db0,SELECT 非 0 会报错

典型使用场景

  • 单机内存装不下、需要横向扩展容量的业务,按槽分摊到多个主节点
  • 既要分片又要自动故障转移的场景,用从节点顶替宕掉的主节点
  • 读写量增长后按槽迁移做在线扩容,避免整体停机重导数据
  • 需要在同一套集群内按哈希标签把强相关键聚到同一槽,支撑多键操作与事务
  • 自建替代代理型分片方案,减少一层转发与运维组件

查看拓扑与槽归属

查看拓扑与槽归属
redis-cli -p 7000 CLUSTER INFO            # cluster_state 是否为 ok
redis-cli -p 7000 CLUSTER NODES           # 节点列表与负责的槽区间
redis-cli -p 7000 CLUSTER SLOTS           # 槽与主从对应关系
redis-cli -p 7000 CLUSTER KEYSLOT user:1001   # 键落在哪个槽
redis-cli -c -p 7000 GET user:1001        # -c 跟随重定向,集群调试几乎必开
redis-cli --cluster check 10.0.0.11:7000  # 整体一致性体检

关键概念对照

概念含义判断要点
槽 slot键空间的最小分配单位16384 个槽必须全部有主,否则集群不可用
MOVED槽已归属别的节点客户端应更新本地路由表并重发
ASK槽正在迁移中的临时改道只对本次请求改道,不动路由表
哈希标签{} 内的内容参与 CRC16 计算让多个键稳定落在同一槽
集群总线节点间握手、投票、状态广播端口为数据端口加 10000
槽数为什么是 16384:节点间心跳会携带一个位图表示自己负责哪些槽,16384 位即 2KB,开销可控;同时集群规模在实践中很难达到上千节点,16384 个槽已足够均匀分配。这个数字是写死在协议里的,不能配置。
集群局限:只支持 db0,多键命令、事务、Lua 脚本要求涉及的键在同一槽,批量键操作需要客户端按槽拆分;跨槽的集合运算必须在业务侧完成。

上线前必须确认的四项

  • 客户端支持集群:能维护路由表、跟随 MOVED 与 ASK,只给种子节点列表让其自动发现拓扑
  • 槽全覆盖:扩容或迁移中途中断会留下未分配槽,此时集群整体不可写,需要补完迁移
  • 故障转移可用:每主至少一从,且多数主节点在线才能完成选举,主从不要全部堆在同一台物理机上
  • 键设计先行:涉及多键的操作用哈希标签把数据聚到同槽,标签粒度不能粗到只剩一个槽
Cluster 不保证强一致:主节点收到写入即向客户端返回成功,命令之后才异步复制到从节点。主节点故障时仍未同步的写入会永久丢失,不能把集群当成强一致存储用于账务类场景。

易错点

  • 用不支持集群重定向的客户端直连节点,表现为大量 MOVED 报错,而服务端其实完全正常,先确认客户端是否开启集群模式
  • 槽没有全部分配(cluster_slots_assigned 小于 16384)时集群处于 fail 状态,所有写入被拒,扩容过程中要核对槽覆盖情况
  • 只部署 2 个主节点:少数派无法选举,任一主节点故障都无法完成自动切换,等于用集群的复杂度换来单点的可靠性
  • 把集群总线端口 p+10000 忘在防火墙外,节点互相握手失败,表现为节点频繁被视为下线但数据端口连通正常

数据来源与参考

  • Redis 官方文档:Cluster 教程与槽位说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌