
# 如何提前发现大Key和热Key？
| 方法                                       | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
|:---|:---|
| 使用DCS自带的大Key和热Key分析工具进行分析                | 请参考[分析Redis实例大Key和热Key](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-190808001.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 通过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](https://github.com/sripathikrishnan/redis-rdb-tools?spm=a2c4g.11186623.0.0.140745d6UhJnC6)是分析Redis RDB快照文件的开源工具。可以根据需求自定义分析Redis实例中所有Key的内存占用情况。 使用此方法需要在DCS实例备份与恢复页签中[导出实例的rdb文件](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0312034.html)。 注意： 该方法时效性相较于在线分析来说较差，优势在于完全不影响现有业务。                                                                                                                                                                                                                            |
   
对于Redis 3.0实例，由于Redis 3.0本身不支持热Key分析，推荐可以使用[配置告警](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-190905001.html#section4)的方法，帮助您发现热Key。
- 配置节点级别的**内存利用率** 监控指标的告警。
  如果某个节点存在大key，这个节点比其他节点内存使用率高很多，会触发告警，便于用户发现潜在的大key。
  

- 配置节点级别的**入网最大带宽、** **出网最大带宽** **、最大CPU使用率** 监控指标的告警。
  如果某个节点存在热key，这个节点的带宽占用、最大CPU使用率都比其他节点高，该节点会容易触发告警，便于用户发现潜在热key。
  
 
