CLUSTER SHARDS
CLUSTER SHARDS
- 可用时间
- 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]。因此,槽位字段将由以下整数列表表示。
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:
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"