CLUSTER SHARDS

语法
CLUSTER SHARDS
可用版本
Redis 开源版 7.0.0
时间复杂度
O(N),其中 N 是集群节点的总数
ACL 类别
@slow,

CLUSTER SHARDS 返回集群分片的详细信息。分片被定义为一组服务相同槽集合并相互复制的节点的集合。一个分片在任何给定时间只能有一个主节点,但可以有多个或没有副本。即使分片没有服务任何槽,它仍然可以拥有副本。

此命令通过提供一种更高效且可扩展的集群表示方式,取代了 CLUSTER SLOTS 命令。

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

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

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

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

'nodes' 字段包含该分片内所有节点的列表。每个节点都是一个描述节点属性的映射。某些属性是可选的,未来可能会添加更多属性。当前属性列表如下

  • id: 此特定节点的唯一节点 ID。
  • endpoint: 访问此节点的首选端点,有关此字段可能值的更多信息,请参见下文。
  • ip: 向此节点发送请求的 IP 地址。
  • hostname (可选): 向此节点发送请求的公布主机名。
  • port (可选): 节点的 TCP(非 TLS)端口。port 或 tls-port 中至少一个存在。
  • tls-port (可选): 节点的 TLS 端口。port 或 tls-port 中至少一个存在。
  • role: 此节点的复制角色。
  • replication-offset: 此节点的复制偏移量。此信息可用于将命令发送到最新的副本。
  • health: 为 onlinefailedloading。此信息应用于确定应将流量发送到哪些节点。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"

RESP2 回复

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

RESP3 回复

数组回复: 一个嵌套列表,其中包含描述各个分片的哈希范围和分片节点的映射回复
评价此页
返回顶部 ↑