redis-cli --bigkeys 是什么
redis-cli --bigkeys 用 SCAN 遍历键空间,按数据类型分别记录元素数量最多的键,最后汇总输出各类的规模领先者。它是例行键治理的扫描手段,报出的是元素个数或字符串长度,不是内存占用;要按内存口径找大键,用 --memkeys 或 MEMORY USAGE 定点核查。
基本信息
| 用法 | redis-cli --bigkeys -i 0.1 |
|---|---|
| 实现方式 | 基于 SCAN 的游标遍历,不阻塞整个键空间 |
| 输出 | 各类型的最大键、元素数量与占比统计 |
| 相关选项 | -i 每次 SCAN 之间的间隔秒数;--memkeys 按内存口径统计 |
| 执行位置 | 建议从库执行,或主库低峰执行 |
典型使用场景
- 例行键治理:定期扫描发现规模异常的键,纳入拆分计划
- 故障复盘:出现延迟尖峰后核对是否有超大集合被整体操作
- 容量评估:了解各类键的规模分布,为内存估算提供依据
- 新业务接入评审:上线前扫一次,避免把大键设计带进生产
- 集群治理:对分片逐个执行,找出分布不均的节点
扫描用法
扫描用法
redis-cli --bigkeys -i 0.1 # 每 0.1 秒扫描一批,降低瞬时压力
redis-cli --bigkeys -i 0.1 --memkeys # 按内存占用口径统计大键
redis-cli -h slave-host -p 6379 --bigkeys # 从库执行,避免影响主库
redis-cli MEMORY USAGE suspect:key # 对扫描结果定点核查内存
redis-cli STRLEN suspect:string # 字符串键确认长度
redis-cli SCARD suspect:set # 集合键确认元素个数输出信息读法
| 输出项 | 含义 | 怎么用 |
|---|---|---|
| 各类型最大键 | 该类型中元素最多的键名 | 作为重点核查清单 |
| 元素数量 | 集合类键的元素个数 | 对照业务的预期规模 |
| 字符串长度 | 字符串键的字节数 | 判断是否需要拆分或外置 |
| 扫描统计 | 采样的键数量与类型分布 | 确认扫描是否覆盖了目标范围 |
扫描基于抽样统计口径,用于发现量级问题而不是精确审计:元素个数多的不一定内存最多,字符串长度大的键按内存看可能远超集合同行。
集群模式下没有一次扫全集群的开关,需要对每个主节点分别执行,或借助 CLUSTER SLOTS 遍历后逐个连接。