*Redis CLUSTER MYID 命令

CLUSTER MYID 返回当前节点的唯一节点 ID(node ID),该 ID 在集群中用于标识节点身份。


*语法

CLUSTER MYID

*参数说明

无参数。


*返回值

  • String:当前节点的 40 位十六进制节点 ID。

*时间复杂度

O(1)

*

*示例

*获取当前节点 ID

> CLUSTER MYID
"3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b"

*在脚本中使用

> CLUSTER MYID
"07c37dfeb235213a872192d90877d0cd55635b91"

*配合其他命令使用

> CLUSTER MYID
"67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1"
> CLUSTER COUNT-FAILURE-REPORTS 67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1
(integer) 0

*常见错误

错误 原因 解决
ERR This instance has cluster support disabled 未启用集群模式 在 redis.conf 中设置 cluster-enabled yes

*最佳实践

  • 节点 ID 是节点的唯一标识,在集群生命周期中保持不变(除非节点重置)
  • 在自动化运维脚本中,可用此命令获取当前节点 ID,然后配合 CLUSTER NODESCLUSTER REPLICAS 等命令进行节点管理
  • 节点 ID 与节点的 IP:端口 无绑定关系,IP 或端口变化后节点 ID 仍保持不变
  • CLUSTER NODES 的输出第一列就是当前节点的 ID

*FAQ

Q1: 节点 ID 和节点名称有什么区别? A: Redis Cluster 中每个节点有一个 40 位的十六进制唯一 ID,这是节点的唯一标识。节点没有独立的 "名称" 概念,节点 ID 就是其标识符。在 CLUSTER NODES 输出中,最后一列可能包含 hostnamemyself 等辅助信息。

Q2: 节点 ID 在什么情况下会改变? A: 正常情况下不会改变。只有当执行 CLUSTER RESET 命令(带 HARDSOFT 选项)时,节点会重新生成 ID。节点重启或配置更新不会改变 ID。

Q3: 如何在非集群模式下获取节点标识? A: 非集群模式下没有 CLUSTER MYID 命令。可以使用 INFO server 中的 run_id 作为临时标识,但 run_id 每次重启都会变化,与集群节点 ID 的持久性不同。