*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 NODES、CLUSTER REPLICAS 等命令进行节点管理
- 节点 ID 与节点的 IP:端口 无绑定关系,IP 或端口变化后节点 ID 仍保持不变
- 在 CLUSTER NODES 的输出第一列就是当前节点的 ID
*FAQ
Q1: 节点 ID 和节点名称有什么区别?
A: Redis Cluster 中每个节点有一个 40 位的十六进制唯一 ID,这是节点的唯一标识。节点没有独立的 "名称" 概念,节点 ID 就是其标识符。在 CLUSTER NODES 输出中,最后一列可能包含 hostname 或 myself 等辅助信息。
Q2: 节点 ID 在什么情况下会改变?
A: 正常情况下不会改变。只有当执行 CLUSTER RESET 命令(带 HARD 或 SOFT 选项)时,节点会重新生成 ID。节点重启或配置更新不会改变 ID。
Q3: 如何在非集群模式下获取节点标识?
A: 非集群模式下没有 CLUSTER MYID 命令。可以使用 INFO server 中的 run_id 作为临时标识,但 run_id 每次重启都会变化,与集群节点 ID 的持久性不同。