*Redis CLUSTER SLOT-STATS 命令

CLUSTER SLOT-STATS 返回集群各槽位的统计信息,包括 key 数量、内存使用等。


*语法

CLUSTER SLOT-STATS [slots-start slots-end [SLOTS start end]]

*参数说明

参数 类型 必填 说明
slots-start Integer 槽位范围起始编号(0-16383)
slots-end Integer 槽位范围结束编号(0-16383)

*选项

选项 说明
SLOTS start end 指定要查询的槽位子范围

*返回值

  • Array:槽位统计信息数组,每个元素包含:
    • 槽位编号(Integer)
    • key 数量(Integer)
    • 内存使用量(Integer,字节数)
  • Error:参数无效或集群模式未启用

*时间复杂度

O(N),N 为查询的槽位数量。


*示例

*查看所有槽位统计

> CLUSTER SLOT-STATS
1) 1) (integer) 0
   2) (integer) 150
   3) (integer) 1024000
2) 1) (integer) 1
   2) (integer) 200
   3) (integer) 1536000
...
16384) 1) (integer) 16383
      2) (integer) 50
      3) (integer) 512000

*查看指定槽位范围

> CLUSTER SLOT-STATS 0 100
1) 1) (integer) 0
   2) (integer) 150
   3) (integer) 1024000
2) 1) (integer) 1
   2) (integer) 200
   3) (integer) 1536000
...
101) 1) (integer) 100
    2) (integer) 180
    3) (integer) 921600

*查看热点槽位

> CLUSTER SLOT-STATS | grep -E '^[0-9]+) .*[0-9]{7,}$'
# 筛选 key 数量或内存异常高的槽位

*常见错误

错误 原因 解决
ERR Invalid slot range 槽位范围不合法 确保在 0-16383 范围内
ERR end slot is smaller than start slot 结束小于起始 调整参数顺序
ERR This instance has cluster support disabled 未启用集群模式 开启 cluster-enabled yes
ERR CLUSTER SLOT-STATS not supported in this version Redis 版本不支持 升级到 Redis 7.4+

*最佳实践

  • 用于分析集群槽位的负载均衡情况
  • 热点槽位(key 数量或内存远高于平均值)可能导致节点负载不均
  • 建议定期运行 CLUSTER SLOT-STATS 监控数据分布
  • 发现不平衡时,可通过 CLUSTER SETSLOTMIGRATE 重新分配槽位
  • 结合 CLUSTER COUNTKEYSINSLOT 做更细粒度的分析

*FAQ

Q1: CLUSTER SLOT-STATS 和 CLUSTER SLOTS 有什么区别? A: CLUSTER SLOTS 返回槽位到节点的映射关系;CLUSTER SLOT-STATS 返回槽位的数据统计(key 数、内存)。

Q2: 内存使用量是如何计算的? A: 统计槽位中所有 key 及其 value 的内存占用,不包括 Redis 内部管理开销。

Q3: 空槽位会返回吗? A: 会返回,key 数量和内存均为 0。

Q4: Redis 哪个版本开始支持 CLUSTER SLOT-STATS? A: Redis 7.4.0 新增此命令。