淘汰量的观测口径
evicted_keys 是 INFO stats 里的累计计数,记录因为内存上限被淘汰掉的键数量。它是最直观的内存压力指标之一:总量只说明历史,短时间内的增量速度才说明当前是否已经跟不上写入。
基本信息
| 位置 | INFO stats 的 evicted_keys |
|---|---|
| 含义 | 累计被淘汰的键数量 |
| 解读方式 | 看增量速率,不看绝对值 |
| 配套指标 | 命中率与内存水位 |
典型使用场景
- 内存告警时判断是否已经在淘汰数据
- 评估扩容效果:扩容后淘汰速率是否回落
- 排查缓存命中率下降是否由淘汰引起
- 容量规划时给出「需要多少余量」的依据
- 验证淘汰策略变更后的实际影响
差分采样
差分采样
# 单点数值看不出趋势,取两次样本做差值才是速率
redis-cli INFO stats | grep evicted_keys
sleep 60
redis-cli INFO stats | grep evicted_keys
# 淘汰与命中率一起看:淘汰上升且命中率下降才是业务受损
redis-cli INFO stats | grep -E 'keyspace_hits|keyspace_misses'
# 确认淘汰策略与上限,理解淘汰为什么会发生
redis-cli CONFIG GET maxmemory-policy maxmemory指标组合读法
| 组合 | 含义 | 结论 |
|---|---|---|
| 淘汰上升 + 命中率下降 | 缓存正在失效且业务受影响 | 需要扩容或治理数据 |
| 淘汰上升 + 命中率稳定 | 淘汰的是确实冷的数据 | 属于正常回收 |
| 淘汰为 0 + 内存贴顶 | 尚未开始淘汰但已接近上限 | 提前规划扩容 |
| expired_keys 上升 | 到期回收在起作用 | 与容量淘汰区分开看 |
| used_memory 阶梯上升 | 写入量在持续增长 | 回到业务侧看写入来源 |
采样间隔要与业务节奏匹配:大促或批量任务期间一分钟的淘汰量可能抵得上平时一小时,采样太稀会漏掉尖峰。
淘汰计数只告诉你「丢了多少」,不告诉你「丢了哪些」;想知道具体影响面,要结合业务侧日志与键名规律一起分析。