- 用法
-
CLUSTER SHARDS
- 复杂度
- O(N),N 为集群节点的总数
- 版本
- 7.0.0
- ACL 类别
- @slow
- 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
健康状态应告知节点目前不符合提供流量的条件,但未来可能符合。
CLUSTER SHARDS
返回集群分片的详细信息。分片定义为一组节点,它们提供相同的槽位集合并相互复制。一个分片在给定时间可能只有一个主节点,但可以有多个或没有副本。分片即使没有任何槽位,也可能拥有副本。
此命令取代了 CLUSTER SLOTS
命令,提供了更高效、更具扩展性的集群表示形式。
此命令适用于 Valkey 集群客户端库,以便理解集群的拓扑结构。客户端在启动时应发出此命令,以检索将集群*哈希槽*与实际节点信息相关联的映射。此映射应 G 用于将命令定向到可能服务于给定命令所关联槽位的节点。如果命令发送到错误的节点,即收到“-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”字段包含分片中所有节点的列表。每个单独的节点都是描述节点属性的映射。某些属性是可选的,未来可能会添加更多属性。当前属性列表为
endpoint 与端口一起定义了客户端用于发送给定槽位请求的位置。endpoint 的 NULL 值表示节点具有未知端点,客户端应连接到与发送 CLUSTER SHARDS
命令相同的端点,但使用该命令返回的端口。当 Valkey 节点位于 Valkey 不知道其端点的负载均衡器之后时,这种未知端点配置非常有用。设置哪个端点由 cluster-preferred-endpoint-type
配置决定。空字符串 ""
是 endpoint 字段的另一个异常值,也是 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 回复
数组回复:一个嵌套列表,其中包含哈希范围和分片节点的映射,描述各个分片。