*Redis CLUSTER REPLICAS 命令

CLUSTER REPLICAS 返回指定主节点(master)的所有副本节点(replica)列表。


*语法

CLUSTER REPLICAS node-id

*参数说明

参数 类型 必填 说明
node-id String 目标主节点的节点 ID(40 位十六进制字符串)

*返回值

  • Array:副本节点信息数组,每个元素为一行文本,格式与 CLUSTER NODES 中副本行相同。若主节点没有副本,返回空数组。

*时间复杂度

O(1)

*

*示例

*查看主节点的副本

> CLUSTER REPLICAS 3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b
1) "e7d1eecce10fd2bb2b5f7755b0c1d6c2d1e1f2a3 192.168.1.13:6379@16379 slave 3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b 0 1700000003000 1 connected"
2) "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0 192.168.1.16:6379@16379 slave 3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b 0 1700000004000 1 connected"

*没有副本的主节点

> CLUSTER REPLICAS 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1
(empty array)

*错误的主节点 ID

> CLUSTER REPLICAS not-a-valid-node-id
(error) ERR Unknown node not-a-valid-node-id

*常见错误

错误 原因 解决
ERR Unknown node ... 提供的 node-id 不存在或不是主节点 通过 CLUSTER NODES 确认正确的主节点 ID
ERR wrong number of arguments 未提供 node-id 参数 补充目标主节点 ID
ERR This instance has cluster support disabled 未启用集群模式 在 redis.conf 中设置 cluster-enabled yes

*最佳实践

  • 用于检查主节点的副本拓扑,评估高可用性。若主节点没有副本,故障时将无法自动转移,存在单点故障风险
  • 副本行中的 lag 信息(通过解析输出中的字段)可用于判断副本同步延迟
  • 在故障转移后,原主节点可能变成副本,此时查询其 ID 会返回 ERR Unknown node(因为它不再是主节点)。建议查询前先通过 CLUSTER NODES 确认节点角色
  • 生产环境建议监控每个主节点的副本数量,确保至少有一个在线副本

*FAQ

Q1: 为什么查询一个副本节点的 ID 会报错? A: CLUSTER REPLICAS 只能查询主节点。查询副本节点会返回 ERR Unknown node,因为副本节点本身没有副本。

Q2: 如何获取副本的同步延迟? A: 在 CLUSTER NODES 输出中,副本行倒数第二个字段(pong-recv 之后的字段)可间接反映延迟。更精确的延迟可使用 INFO replication 中的 master_last_io_seconds_ago 字段。

Q3: 可以查询 myself 主节点的副本吗? A: 可以。只要当前节点是主节点,就可以用 CLUSTER REPLICAS 查询自身的节点 ID,返回其副本列表。