首页/数据/Redis 进阶速查/CLUSTER SLOTS:槽与地址映射

CLUSTER SLOTS:槽与地址映射

CLUSTER SLOTS 返回每个槽区间的主从地址(新版可能返回含额外字段的形式),客户端库据此建立路由表并按 MOVED 更新。

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

集群路由表怎么看

CLUSTER SLOTS 把 16384 个槽按区间汇总成一张路由表:每个条目给出槽区间、主节点地址与从节点地址。客户端库启动时用它建立路由,遇到重定向后再刷新。它回答的是集群现在长什么样,是路由类故障必查的一条命令。

基本信息

命令redis-cli -p 7000 CLUSTER SLOTS
返回槽区间数组,每段含主节点与从节点地址
新版替代CLUSTER SHARDS(7.0 起,结构更清晰)
配套命令CLUSTER KEYSLOT 算单键归属,GETKEYSINSLOT 列出槽内键

典型使用场景

  • 初始化客户端路由表:新接入的服务用它对账槽与节点映射
  • 扩容与迁移后核对:确认每段槽的归属与预期一致
  • 排查路由错误:客户端算出的槽与集群实际归属不符时会持续重定向
  • 确认从节点挂载:每段槽是否都有可用的从节点做故障承接
  • 接口迁移评估:对照 SHARDS 输出,验证客户端解析新格式的能力

核对示例

核对示例
redis-cli -p 7000 CLUSTER SLOTS                    # 原始路由表
redis-cli -p 7000 CLUSTER SHARDS                   # 7.0 起更结构化的描述
redis-cli -p 7000 CLUSTER KEYSLOT user:1001        # 单键落在哪个槽
redis-cli -p 7000 CLUSTER COUNTKEYSINSLOT 1234     # 该槽里有多少键
redis-cli -p 7000 CLUSTER GETKEYSINSLOT 1234 10    # 列出槽内键,迁移前核对

条目字段读法

位置含义注意点
第一个元素区间起始槽取值 0 到 16383
第二个元素区间结束槽与起始槽组成闭区间
第三个元素主节点条目:地址与端口7.0 起在其后追加节点 ID 与网络元数据
后续元素该区间的从节点条目数量为 0 说明这段槽没有从节点
条目总数覆盖的槽段数量健康集群应完整覆盖 16384 个槽
7.0 起主从条目在地址之后追加了节点 ID 与网络元数据(例如 TLS 端口信息)。老客户端按位置解析通常仍能取到地址与端口,但仍建议升级前确认客户端库对新格式的兼容性。
它是拓扑快照而不是健康报告:节点是否处于失败状态要看 CLUSTER NODES 的 flags。两者结合才能判断某段槽眼下是否真的可服务。
把输出长期缓存成静态路由表会失真:槽迁移期间客户端应依赖重定向机制或定期刷新,否则扩容后会出现持续的键找不到与重定向错误。

易错点

  • 把结果缓存到天级别:迁移或主从切换后路由表过期,表现为持续重定向甚至拒绝服务
  • 只检查槽是否被覆盖,不看从节点数量:没有从节点的槽段在主节点故障时直接不可用
  • 用单键算槽的结果推断整段分布:哈希标签与键名设计会让热点集中在一小段槽上,容量评估必须看真实键分布
  • 客户端里硬编码节点 IP 与端口:集群改地址后必然失效,应使用域名或支持重定向的服务发现客户端

数据来源与参考

  • Redis 官方文档:CLUSTER SLOTS / CLUSTER SHARDS 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌