*Redis CLUSTER MYSHARDID 命令

CLUSTER MYSHARDID 返回当前节点所属分片(shard)的 ID。该命令在 Redis 7.2.0 引入,用于标识集群中的分片归属。


*语法

CLUSTER MYSHARDID

*参数说明

无参数。


*返回值

  • String:当前节点所属分片的 ID(40 位十六进制字符串)。

*时间复杂度

O(1)

*

*示例

*获取当前分片 ID

> CLUSTER MYSHARDID
"3c3a0c74aae0b56179ccb1a76b7850a3b1f1b26b"

*主从节点分片关系

> CLUSTER MYSHARDID
"07c37dfeb235213a872192d90877d0cd55635b91"
> CLUSTER REPLICAS 07c37dfeb235213a872192d90877d0cd55635b91
1) "67ed2db8d677e59ec4a4cefb06858cf2a1a89fa1 192.168.1.21:6379@16379 slave 07c37d... 0 1700000000000 2 connected"

*与其他节点对比

> CLUSTER MYSHARDID
"abc123..."
> CLUSTER NODES
...

*常见错误

错误 原因 解决
ERR unknown subcommand 'myshardid' Redis 版本低于 7.2.0 升级到 Redis 7.2.0 或更高版本
ERR This instance has cluster support disabled 未启用集群模式 在 redis.conf 中设置 cluster-enabled yes

*最佳实践

  • 在 Redis 7.2.0+ 中使用此命令识别分片归属,便于运维管理和分片级别操作
  • 主节点和它的副本节点具有相同的 shard ID,这可用于快速确认节点间的复制关系
  • 配合 CLUSTER SHARDS 使用,可以构建完整的分片拓扑视图
  • 在自动化工具中,可通过 shard ID 将节点分组,进行分片级别的健康检查或配置管理

*FAQ

Q1: shard ID 和 node ID 有什么区别? A: 每个节点有唯一的 node ID;而 shard ID 标识一个分片(一个主节点及其所有副本节点共享同一个 shard ID)。一个分片可以包含多个节点(1 主 + N 从),但它们共享同一个 shard ID。

Q2: 为什么需要 shard ID? A: 在 Redis 7.0+ 引入的集群分片概念中,shard ID 是管理分片的基本单位。例如 CLUSTER SHARDS 命令返回的就是以 shard 为单位的拓扑信息,而不是以单个节点为单位。shard ID 便于在更高层次上管理数据分片和高可用组。

Q3: Redis 7.0 和 7.2 对这个命令的支持有何不同? A: CLUSTER MYSHARDID 命令在 Redis 7.2.0 才引入。在 Redis 7.0.x 中执行此命令会返回 ERR unknown subcommand 'myshardid'。在 Redis 7.2.0+ 中可用。