集群路由表怎么看
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。两者结合才能判断某段槽眼下是否真的可服务。
把输出长期缓存成静态路由表会失真:槽迁移期间客户端应依赖重定向机制或定期刷新,否则扩容后会出现持续的键找不到与重定向错误。