*Redis CLUSTER SLAVES 命令
CLUSTER SLAVES 返回指定主节点的所有从节点信息。
*语法
CLUSTER SLAVES node-id
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| node-id | String | 是 | 主节点的节点 ID(40 位十六进制字符串) |
*返回值
- Array:从节点信息字符串数组,每个元素格式与 CLUSTER NODES 行相同
- Empty Array:指定节点没有从节点
- Error:节点 ID 不存在或不是主节点
*时间复杂度
O(1)
*
*示例
*查看主节点的从节点
> CLUSTER SLAVES 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1
1) "07c37dfeb235213a872192d90877d0cd55635b91 127.0.0.1:30004@31004 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238317741 4 connected"
2) "1a2b3c4d5e6f7890abcdef1234567890abcdef12 127.0.0.1:30005@31005 slave 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 0 1426238318000 4 connected"
*无主节点时
> CLUSTER SLAVES e7d1eecce10fd6bb5eb35b9f99a514335d9ba9ca
(empty array)
*获取节点 ID 后查询
> CLUSTER NODES | grep myself
1a2b3c4d5e6f7890abcdef1234567890abcdef12 127.0.0.1:30001@31001 myself,master - 0 0 1 connected 0-5460
> CLUSTER SLAVES 1a2b3c4d5e6f7890abcdef1234567890abcdef12
1) "..."
*常见错误
| 错误 | 原因 | 解决 |
|---|---|---|
| ERR Unknown node | 节点 ID 不存在 | 确认 ID 正确,可用 CLUSTER NODES 查询 |
| ERR The specified node is not a master | 该节点是从节点 | 查询主节点 ID |
| ERR This instance has cluster support disabled | 未启用集群模式 | 开启 cluster-enabled yes |
*最佳实践
- 用于监控主节点的复制拓扑和高可用状态
- 配合 CLUSTER NODES 获取节点 ID 后使用
- 建议定期检查每个主节点是否有足够数量的从节点(至少 1 个)
- 自动化脚本中可用于检测复制异常(如从节点掉线)
- 注意:返回的格式与 CLUSTER NODES 兼容,可以复用解析逻辑
*FAQ
Q1: CLUSTER SLAVES 和 CLUSTER REPLICAS 有什么区别? A: 两者功能相同,CLUSTER REPLICAS 是 CLUSTER SLAVES 的别名(更现代的命名),建议使用 CLUSTER REPLICAS。
Q2: 从节点能查询其他主节点的从节点吗? A: 可以。任何集群节点都可以查询任意主节点的从节点信息。
Q3: 如果主节点故障转移了,原来的从节点会怎样显示?
A: 故障转移后,原来的从节点之一成为新主节点。查询旧主节点 ID 会返回 ERR Unknown node(已移除),应查询新主节点 ID。
Q4: 返回的格式如何解析?
A: 与 CLUSTER NODES 单行格式一致:id ip:port@cport flags master ping-sent pong-recv config-epoch link-state slot。可用空格分割解析。