CLUSTER SHARDS

返回集群槽到分片的映射。

语法

CLUSTER SHARDS

引入版本:7.0.0

复杂度摘要:O(N)

CLUSTER SHARDS 返回有关集群分片的详细信息。分片被定义为服务于同一组槽并且相互复制的节点的集合。一个分片在给定时间可能只有一个主节点,但可能有多个副本或没有副本。分片可能不为任何插槽提供服务,但仍具有副本。

此命令通过提供更高效且可扩展的集群表示来替换 CLUSTER SLOTS 命令。

该命令适合Redis集群客户端库使用,以了解集群的拓扑结构。客户端应在启动时发出此命令,以便检索将集群 哈希槽 与实际节点信息相关联的映射。该映射应用于将命令定向到可能服务于与给定命令关联的槽的节点。如果命令发送到错误的节点,因为它收到了“-MOVED”重定向,则可以使用该命令来更新集群的拓扑。

该命令返回一个分片数组,每个分片包含两个字段:“slots”和“nodes”。

“slots”字段是该分片服务的槽范围列表,存储为表示范围的起始槽和结束槽的整数对。例如,如果节点拥有槽 1、2、3、5、7、8 和 9,则槽范围将存储为 [1-3]、[5-5]、[7-9]。因此,槽字段将由以下整数列表表示。

1) 1) "slots"
   2) 1) (integer) 1
      2) (integer) 3
      3) (integer) 5
      4) (integer) 5
      5) (integer) 7
      6) (integer) 9

“节点”字段包含分片内所有节点的列表。每个单独的节点都是描述该节点的属性的映射。有些属性是可选的,将来可能会添加更多属性。当前属性列表:

  • id:该特定节点的唯一节点ID。
  • 端点:到达节点的首选端点,有关该字段可能值的更多信息,请参阅下文。
  • ip:该节点发送请求的IP地址。
  • 主机名(可选):为此节点发送请求的已宣布的主机名。
  • port(可选):节点的TCP(非TLS)端口。至少存在 port 或 tls-port 之一。
  • tls-port(可选):节点的 TLS 端口。至少存在 port 或 tls-port 之一。
  • 角色:该节点的复制角色。
  • replication-offset:该节点的复制偏移量。此信息可用于将命令发送到最新的副本。
  • 健康状况:online、failed 或 loading。该信息应用于确定应向哪些节点发送流量。 loading 健康状态应用于了解节点当前不符合提供流量服务的条件,但将来可能符合条件。

端点与端口一起定义客户端用于发送给定槽请求的位置。端点的 NULL 值表示节点具有未知端点,并且客户端应连接到用于发送 CLUSTER SHARDS 命令的同一端点,但使用从命令返回的端口。当 Redis 节点位于 Redis 不知道其端点的负载均衡器后面时,此未知端点配置非常有用。设置哪个端点由 cluster-preferred-endpoint-type 配置确定。空字符串 "" 是端点字段以及 ip 字段的另一个异常值,如果节点不知道自己的 IP 地址,则会返回该值。这种情况可能发生在仅包含一个节点或该节点尚未与集群的其余部分组成的集群中。如果节点被错误配置为使用已公布的主机名,但未使用 cluster-announce-hostname 配置主机名,则会显示值 ?。客户端可以将空字符串视为 NULL,即用于将当前命令发送到的同一端点,而 "?" 应被视为未知节点,不一定与服务当前命令的节点相同。

示例

> CLUSTER SHARDS
1) 1) "slots"
   2) 1) (integer) 0
      2) (integer) 5460
   3) "nodes"
   4) 1)  1) "id"
          2) "e10b7051d6bf2d5febd39a2be297bbaea6084111"
          3) "port"
          4) (integer) 30001
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "master"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"
      2)  1) "id"
          2) "1901f5962d865341e81c85f9f596b1e7160c35ce"
          3) "port"
          4) (integer) 30006
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "replica"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"
2) 1) "slots"
   2) 1) (integer) 10923
      2) (integer) 16383
   3) "nodes"
   4) 1)  1) "id"
          2) "fd20502fe1b32fc32c15b69b0a9537551f162f1f"
          3) "port"
          4) (integer) 30003
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "master"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"
      2)  1) "id"
          2) "6daa25c08025a0c7e4cc0d1ab255949ce6cee902"
          3) "port"
          4) (integer) 30005
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "replica"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"
3) 1) "slots"
   2) 1) (integer) 5461
      2) (integer) 10922
   3) "nodes"
   4) 1)  1) "id"
          2) "a4a3f445ead085eb3eb9ee7d8c644ec4481ec9be"
          3) "port"
          4) (integer) 30002
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "master"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"
      2)  1) "id"
          2) "da6d5847aa019e9b9d2a8aa24a75f856fd3456cc"
          3) "port"
          4) (integer) 30004
          5) "ip"
          6) "127.0.0.1"
          7) "endpoint"
          8) "127.0.0.1"
          9) "role"
         10) "replica"
         11) "replication-offset"
         12) (integer) 72156
         13) "health"
         14) "online"

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动
仅支持 OSS集群API。

返回值

RESP2

数组回复:哈希范围和描述各个分片的分片节点的映射的嵌套列表。

RESP3

数组回复:哈希范围和描述各个分片的分片节点的 地图回复 的嵌套列表。

资料来源:Redis 官方 CLUSTER SHARDS 文档;中文内容参考 Redis 文档许可。