
# 查找Redis实例大Key和热Key
大Key和热Key是Redis使用中经常遇到的问题，本章节主要介绍DCS管理控制台的大Key和热Key分析功能，通过该功能可以分别监控到Redis实例中占用空间最大的Key和存储数据中被访问最多的Key。
- 大Key可以分为两种情况：
  - Key的Value占用存储空间较大。一般单个String类型的Key大小达到10KB，或者集合类型的Key总大小达到50MB，则被定义为大Key。
  
  - Key的元素数量较多。一般集合类型的Key中元素超过5000个，则被定义为大Key。
   
- 热Key通常指一个Key的访问频率或资源占用显著高于其他Key。例如：
  - 某个集群实例一个分片每秒处理10000次请求，其中有3000次都是操作同一个Key。
  
  - 某个集群实例一个分片的总带宽使用（入带宽+出带宽）为100Mbit/s，其中80Mbit/s是由于对某个Hash类型的Key执行HGETALL所占用。
   
#### 介绍视频
本视频介绍关于DCS的大Key和热Key分析功能。
<video controls="controls" preload="none" id="object131221520270" class="idp-external-video" src="https://res-video.hc-cdn.com/cloudbu-site/china/zh-cn/support/dcs-video/1726648118810287555.mp4" title="大Key热Key分析" poster="https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002376280349.jpg" height="335.0000" width="600.0000"></video>
#### 约束与限制
执行大Key和热Key分析会消耗CPU，建议在业务低峰时段执行大Key和热Key分析，降低CPU被用满的可能。
**大Key分析使用限制和说明：**
- 在大Key分析时，会遍历Redis实例中的所有Key，因此分析所需要时间取决于Key的数量。
- 如果要进行大Key分析，建议在业务低谷期间进行，且不要与配置的自动备份时间重叠。
- 如果是主备、读写分离和集群实例，大Key分析是对备节点的分析，对实例性能影响较小。如果是单机实例，由于只有一个节点，是对主节点进行分析，用户访问性能会略有影响。
- 对于大Key分析任务，每个Redis实例默认最多保存100次分析任务的记录，当超过100条记录时会默认删除最老的分析记录，而存入最新的记录。同时，支持用户在控制台上手动删除无用的大Key分析记录。
**热Key分析使用限制和说明：**
- 只有Redis 4.0及以上版本的实例支持热Key分析。
- 实例maxmemory-policy参数必须配置为allkeys-lfu或者volatile-lfu。
- 在热Key分析时，会遍历Redis实例中的所有Key，因此分析所需要时间取决于Key的数量。
- 配置自动热key分析时，请在业务的非高峰期进行，避免影响业务，同时也不要过了高峰期太久，避免分析结果不准确。
- 热Key分析是对实例主节点的分析，在进行分析时，用户访问性能会略有影响。
- 对于热Key分析任务，每个Redis实例默认最多保存100次分析任务的记录。当超过100条记录时会默认删除最老的分析记录，而存入最新的记录。同时，支持用户在控制台上手动删除无用的热Key分析记录。
 
#### 分析查找大Key
1. 登录[分布式缓存服务管理控制台](https://console.huaweicloud.com/dcs)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001549115173.png)，选择实例所在的区域。
3. 单击左侧菜单栏的"缓存管理"，进入实例信息页面。
4. 单击需要缓存分析的Redis实例名称，进入该实例的概览页面。
5. 选择"分析与诊断 \> 缓存分析"进入"缓存分析"页面。
6. 在"大Key分析"页签下，您可以选择立即对实例进行大Key分析或者设置定时任务，每日自动分析。
7. 当分析任务结束后，单击任务ID，您可以查询当前实例不同数据类型的大Key分析结果。 
   - 大Key分析结果显示数据大小最大的前100条Key记录（string类型显示20条，list/set/zset/hash每种类型各20条，共显示80条）。
   
   - 单击分析列表"操作"列的"下载"或"删除"，也可以下载或删除分析结果。
   
   
   图1查看大Key分析结果（string类型）   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002447120569.png "点击放大")
   图2查看大Key分析结果（list/set/zset/hash类型）   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002447244985.png "点击放大")
   表1大Key分析结果参数说明 
   | 参数名称     | 下载文件中的参数名称 | 参数说明                                                    |
   |:---|:---|:---|
   | Key名称    | Key        | 大Key分析结果中Key的名称。                                        |
   | 类型       | Type       | Key的类型，包括String、Hash、List、Set、ZSet等数据类型。                |
   | 大小       | Bytes      | Key的Value大小，单位为：Bytes。                                  |
   | 数量       | Quantity   | Key中元素的数量，仅在"list/set/zset/hash"类型的数据下显示该参数。单位为：Counts。 |
   | 分片       | Shard      | 大Key所在的分片名称及IP（仅集群实例显示该参数）。                             |
   | Database | Database   | Key所在的Database。                                         |
      
   
   
 
#### 分析查找热Key
1. 登录[分布式缓存服务管理控制台](https://console.huaweicloud.com/dcs)。
2. 在管理控制台左上角单击![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000001549115173.png)，选择实例所在的区域。
3. 单击左侧菜单栏的"缓存管理"，进入实例信息页面。
4. 单击需要缓存分析的Redis实例名称，进入该实例的概览页面。
5. 选择"分析与诊断 \> 缓存分析"进入"缓存分析"页面。
6. 在"热Key分析"页签下，您可以选择立即对实例进行热Key分析或者设置定时任务，每日自动分析。 
   如果是2020年7月之前创建的Redis实例，且没有修改过该参数，则maxmemory-policy默认值为noeviction，如果是2020年7月之后创建的实例，maxmemory-policy默认值为volatile-lru。您需要先将maxmemory-policy参数配置为allkeys-lfu或者volatile-lfu，才能执行热Key分析。您可以在"实例配置 \> 参数配置"下修改参数。allkeys-lfu和volatile-lfu的具体介绍请参考[逐出策略](https://support.huaweicloud.com/dcs_faq/dcs-faq-0427031.html)。
   
   
7. 当分析任务结束后，单击任务ID，可以查询当前实例的热Key分析结果。 
   - 热Key分析结果，显示在分析时间段内被访问频度最高的前100条Key记录。
   
   - 单击分析列表"操作"列的"下载"或"删除"，也可以下载或删除分析结果。
   
   
   图3查看热Key分析结果   
   ![](https://support.huaweicloud.com/usermanual-dcs/zh-cn_image_0000002447236405.png "点击放大")
   表2热Key分析结果参数说明 
   | 参数名称     | 下载文件中的参数名称 | 参数说明                                                                                                                                                                    |
   |:---|:---|:---|
   | Key名称    | Key        | 热Key分析结果中Key的名称。                                                                                                                                                        |
   | 类型       | Type       | Key的类型，包括String、Hash、List、Set、Zset等数据类型。                                                                                                                                |
   | 大小       | Size       | Key的Value的大小，单位为：Bytes。                                                                                                                                                 |
   | 频度       | FREQ       | 表示Key在一段时间（一般指1分钟）的访问频度，会随着访问的频率而变化。 该值并不是简单的访问频率值，而是一个基于概率的对数计数器结果，最大为255（可表示100万次访问），超过255后如果继续频繁访问该值并不会继续增大，同时默认如果每过一分钟没有访问，该值会衰减1。 |
   | 分片       | Shard      | Key所在的分片（只有集群实例显示该参数）。                                                                                                                                                  |
   | Database | Database   | Key所在的DB。                                                                                                                                                               |
      
   
   
 
#### 相关文档
- [Redis Cluster集群实例级别容量和性能未达到瓶颈，但某个分片容量或性能已过载？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0521002.html)
- [单个Key负载过大（热Key），有什么影响？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0521004.html)
- [为了减少大Key和热Key过大，有什么使用建议？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0521005.html)
- [为什么Redis 3.0实例没有热Key功能？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0521006.html)
- [如何提前发现大Key和热Key？](https://support.huaweicloud.com/dcs_faq/dcs-faq-0606002.html)
 
