*Redis cluster-shards 命令
*语法
CLUSTER SHARDS
CLUSTER SHARDS 返回集群分片的详细信息。 分片被定义为一组节点,它们服务于同一组槽并相互复制。 一个分片在给定时间只能有一个主节点,但可能有多个副本或没有副本。 一个分片可能不服务任何槽,但仍可能有副本。
此命令替代了 CLUSTER SLOTS 命令,通过提供更有效和可扩展的集群表示。
该命令适合 Redis 集群客户端库使用,以便了解集群的拓扑结构。 客户端应在启动时发出此命令,以检索将集群哈希槽与实际节点信息关联的映射。 此映射应用于将命令导向可能服务于与给定命令关联的槽的节点。 如果命令发送到错误的节点,因为它收到了 '-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: 可以是
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"