REDIS INCIDENT DESK / 证据编号 R-16

大键与热键取证实验台

“大”描述一次操作要搬多少数据,“热”描述同一个入口每秒被敲多少次。两者会一起出现,也可能毫无关系。先把它们放到两条轴上,再决定是拆值、拆访问,还是只做观察。

正在分析

大 × 热:不要混成一个词

其他业务键当前证据
Redis 键内存体积和访问 QPS 象限图 横轴是键的内存体积,纵轴是访问 QPS。右侧为大键,上侧为热键。 小但热 · 拆流量 又大又热 · 优先处置 普通键 · 持续观察 大但冷 · 拆值/异步删 MEMORY USAGE:4 KB → 128 MB(对数刻度) 访问 QPS:1 → 100,000(对数刻度)
取证结论———
单次 GET 估算—主线程编码 + 网络发送,不含客户端处理
同步 DEL 估算——
节点出口占用——

检查顺序

先确认对象,再测代价

下列命令会随数据类型切换。先在只读副本或低峰执行,避免“为了找事故,再制造一次事故”。

扫描也有成本:--bigkeys、--memkeys、--hotkeys 都会遍历键空间。它们通常使用 SCAN,虽然不像 KEYS 一次阻塞,但仍会消耗 CPU、网络与命令处理时间;大库要在低峰、小批量运行,并观察延迟。

当前证据解读

—

—

--hotkeys 的前提:实例必须启用 LFU 淘汰策略(例如 allkeys-lfu 或 volatile-lfu),它读取的是 LFU 访问频率计数,不是独立的实时 QPS 探针。没有 LFU 计数时,这个工具不能给出可信的热点排序。

处置模拟

热点打散能降单点压力,但会把复杂度搬到业务侧

把同一逻辑内容复制或拆到多个物理键,客户端按用户或请求散列。读流量近似按分片数下降;写入、失效、合并和一致性成本则会上升。

单片峰值 QPS

—

—

单片出口流量

—

假设请求均匀散列;倾斜用户、重试和连接复用会让真实值更高。

写放大 / 合并成本

—

—

01 · 定位慢日志、带宽、命令统计与业务入口交叉验证,别只相信一个扫描结果。
02 · 限损对读热点加本地缓存或请求合并;删除大键优先 UNLINK,必要时限速。
03 · 改模按业务边界拆 Hash/ZSet,或把超大序列化对象拆为稳定的小字段。
04 · 复盘建立键大小、单键 QPS、带宽与延迟基线,让异常在报警里出现,而不是在用户反馈里出现。

估算模型只用于建立量级感:GET 假设 Redis 编码/复制吞吐约 4.5 GB/s,并叠加节点出口传输时间;DEL 按对象体积和聚合元素释放成本估算。真实结果受编码方式、jemalloc、持久化、复制、网络栈和同节点其他命令影响,应以测试环境与生产指标校准。