更新时间:2024-06-19 GMT+08:00

如何提前发现大Key和热Key?

方法

说明

使用DCS自带的大Key和热Key分析工具进行分析

请参考分析Redis实例大Key和热Key

通过redis-cli的bigkeys和hotkeys参数查找大Key和热Key

  • Redis-cli提供了bigkeys参数,能够使redis-cli以遍历的方式分析Redis实例中的所有Key,并返回Key的整体统计信息与每个数据类型中Top1的大Key,bigkeys仅能分析并输入六种数据类型(STRING、LIST、HASH、SET、ZSET、STREAM),命令示例为:redis-cli -h <实例的连接地址> -p <端口> -a <密码> --bigkeys
  • 自Redis 4.0版本起,redis-cli提供了hotkeys参数,可以快速帮您找出业务中的热Key,该命令需要在业务实际运行期间执行,以统计运行期间的热Key。命令示例为:redis-cli -h <实例的连接地址> -p <端口> -a <密码> --hotkeys。热Key的详情可以在结果中的summary部分获取到。

通过Redis命令查找大Key

如果有已知的大Key模式,例如知道其前缀为cloud:msg:test,那么可以通过一个程序,SCAN符合该前缀的Key,然后通过查询成员数量和查询Key大小的相关命令,来判断具体的大Key。

  • 查询成员数量的相关命令:LLEN,HLEN,XLEN,ZCARD,SCARD
  • 查询Key占用内存大小的命令:DEBUG OBJECT,MEMORY USAGE
注意:

该方法会大量消耗计算资源,请知晓并评估其风险,不要在业务压力较大的实例使用该方法,否则可能会对正常业务造成影响。

通过redis-rdb-tools工具找出大Key

redis-rdb-tools是分析Redis RDB快照文件的开源工具。可以根据需求自定义分析Redis实例中所有Key的内存占用情况。

使用此方法需要在DCS实例备份与恢复页签中导出实例的rdb文件

注意:

该方法时效性相较于在线分析来说较差,优势在于完全不影响现有业务。

对于Redis 3.0实例,由于Redis 3.0本身不支持热Key分析,推荐可以使用配置告警的方法,帮助您发现热Key。

  • 配置节点级别的内存利用率监控指标的告警。

    如果某个节点存在大key,这个节点比其他节点内存使用率高很多,会触发告警,便于用户发现潜在的大key。

  • 配置节点级别的入网最大带宽、出网最大带宽CPU利用率监控指标的告警。

    如果某个节点存在热key,这个节点的带宽占用、CPU利用率都比其他节点高,该节点会容易触发告警,便于用户发现潜在热key。