延迟分析(热 Key 分析)

最近更新时间:2026-05-12 10:14:32

我的收藏

操作场景

在 Distributed Cache 数据库中,我们将访问频率高的 Key 称为热点 Key,当 Distributed Cache 数据库请求过大时,多数请求又集中去访问 Distributed Cache 上的某个特定 key。这样会造成流量过于集中,触达物理网卡上限,从而导致 Distributed Cache 服务出现问题甚至宕机。
通过 DBbrain 的热 Key 分析系统,能够快速发现热点 Key,从而为服务优化提供基础。

背景信息

热 Key:在统计周期内被访问次数远高于其他 Key 的 Key。常见来源包括秒杀活动 Key、热点文章 Key、配置 Key 等。
访问频次:本文档中的核心统计字段,表示所选时间范围内该 Key 被访问的累计次数,单位为次,不是 QPS 等速率指标。

使用限制

限制项
限制说明
数据保留时长
热 Key 原始采样数据保留 10 天,超过该期限的数据不可查询。
单次查询时间跨度
起止时间差 ≤ 10 天
历史可追溯起点
起始时间不可早于当前时刻 10 天前。
列表展示条数
单次最多返回 100 条,可选择 50 条或 100 条。
节点版本依赖
实例接入层版本较低时,可能不上报节点 ID 或 DB ID,对应列将显示为空,建议升级到最新版本。
数据可见性
在统计周期不足 1 分钟时(例如新接入实例、刚触发首次命令访问),可能因采样周期未到而暂时无法查询到结果。

注意事项

访问频次是绝对计数(单位:次),不是 QPS 等速率指标。在不同时间范围下查询同一个 Key,得到的访问频次数值不同属正常现象,由所选时间窗口决定。
比较不同 Key 的访问频次时,请确保使用的是相同的时间范围和相同的节点筛选条件,否则不具备可比性。

查看热 Key 分析

1. 登录 DBbrain 控制台
2. 在左侧导航栏,选择诊断优化
3. 在页面上方选择对应数据库和实例 ID,选择延迟分析 > 热 Key 分析页签。

4. 在热 Key 分析页面,设置查询条件,参数说明如下。

参数
说明
数据类型
按 Key 的数据结构过滤。支持:全部、string、list、set、hash、sortedset、stream、none。
时间范围
支持实时视图历史视图两种模式:
实时视图:展示最近一个采样周期内的热 Key,并随后台采样滚动更新。
历史视图:可选近 1 小时、近 3 小时、近 24 小时、近 7 天,或自定义起止时间。
时间范围最长 10 天,起始时间不可早于当前时刻 10 天前。
Redis 节点
选择待分析的 Redis 节点(每个节点是一个独立的 Redis 服务器实例)。可按节点单独查看,也可查看所有节点。
列表限制条数
返回 Top N 数据的条数。支持 50 条、100 条,默认 50 条。
5. 查看分析结果。列表按访问频次降序排列,单击单条记录可查看该 Key 的详情。

后续步骤

定位到热 Key 后,可结合业务情况采取以下优化措施:
Key 拆分:将单个热 Key 按业务维度拆分成多个子 Key,分散到不同节点。
本地缓存:在业务侧引入二级缓存,减少对热 Key 的直接访问。
读写分离:通过读写分离将读流量分摊到只读节点。
业务限流:在应用侧对热点 Key 的访问设置限流策略,防止瞬时流量打满节点。

相关操作

对应的 API 接口

常见问题

Q1:为什么两次查询同一个 Key 的访问频次差异很大?

请检查以下三种常见情况:
1. 是否切换了不同的时间范围(窗口长度变化会直接导致访问频次变化)。
2. 是否切换了不同的 Redis 节点(数据按节点聚合)。
3. 是否处于实时视图模式且距离上次查询不足 1 个采样周期(约 1 分钟),此时数据仍在滚动更新。

实时视图下看不到数据或数据为 0 怎么办?

可能原因及处理建议:
可能原因
处理方法
实例刚接入或刚触发首次命令访问,尚未完成首个采样周期
等待 1~2 个采样周期(约 1~2 分钟)后重新查询。
实例接入层版本较低,未支持热 Key 数据上报
联系运维或工单升级实例至最新版本。
所选 Redis 节点在该时段确实无命令访问
切换到全部节点或选择业务高峰节点查询。
该实例不存在明显热点(访问分布均匀)
该结果为正常状态,可改为查看大 Key 分析或慢日志分析。

不同时间范围下的访问频次为何相差悬殊?

这是预期行为,因为访问频次是该时间范围内的累计值,窗口越长累计值越大。例如同一个 Key:
近 1 小时访问频次为 72000;
近 24 小时访问频次为 1728000;
近 7 天访问频次为 12096000。
这只是统计窗口的差异,不代表该 Key 的访问行为发生变化。如需对比访问行为,请使用相同的时间范围。