Redis CLUSTER SLOTS 命令返回哈希槽和 Redis 实例映射关系。这个命令对客户端实现集群功能非常有用,使用这个命令可以获得哈希槽与节点(由 IP 和端口组成)的映射关系,这样,当客户端收到(用户的)调用命令时,可以根据(这个命令)返回的信息将命令发送到正确的 Redis 实例。
命令格式
CLUSTER SLOTS
可用版本:>=3.0.0
时间复杂度:O(N),N 为 Redis 集群节点的个数。
命令返回值
返回描述每个哈希槽范围的包含嵌套对象的列表,嵌套对象包含 IP/Port。
示例
redis> cluster slots
1) 1) (integer) 0
2) (integer) 4095
3) 1) "127.0.0.1"
2) (integer) 7000
4) 1) "127.0.0.1"
2) (integer) 7004
2) 1) (integer) 12288
2) (integer) 16383
3) 1) "127.0.0.1"
2) (integer) 7003
4) 1) "127.0.0.1"
2) (integer) 7007
3) 1) (integer) 4096
2) (integer) 8191
3) 1) "127.0.0.1"
2) (integer) 7001
4) 1) "127.0.0.1"
2) (integer) 7005
4) 1) (integer) 8192
2) (integer) 12287
3) 1) "127.0.0.1"
2) (integer) 7002
4) 1) "127.0.0.1"
2) (integer) 7006
结果数组
每一个(节点)信息:
- 哈希槽起始编号。
- 哈希槽结束编号。
- 哈希槽对应 master 节点,节点使用 IP/Port 表示。
- master 节点的第一个副本。
- 第二个副本。
- …直到所有的副本都打印出来。
每个结果包含该哈希槽范围的所有存活的副本,没有存活的副本不会返回。(每个节点信息的)第三个(行)对象一定是 IP/Port 形式的 master 节点。之后的所有 IP/Port 都是该哈希槽范围的 Redis 副本。
如果一个集群实例中的哈希槽不是连续的(例如 1-400,900,1800-6000),那么哈希槽对应的 master 和 replica 副本在这些不同的哈希槽范围会出现多次。