*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 REPLICASCLUSTER 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。可用空格分割解析。