缓存负载模拟
redis-cli --lru-test <keys> 模拟带倾斜访问分布的缓存负载,用接近真实缓存模式的访问序列压测实例,观察命中率与内存表现。它常用来预演缓存淘汰与命中率的关系,验证实例容量能否撑住目标键数。因为过程会写入大量测试数据,必须在隔离实例上运行。
基本信息
| 命令 | redis-cli --lru-test <keys> |
|---|---|
| 访问模型 | 带热点倾斜的分布,接近真实缓存负载 |
| 输出 | 命中率等统计信息 |
| 使用前提 | 隔离实例,避免污染生产键空间 |
| 配套观测 | 与 --latency-history 同时看延迟变化 |
典型使用场景
- 缓存容量验证:目标键数下命中率能达到什么水平
- 淘汰策略验证:不同 maxmemory-policy 下的命中率差异
- 规格评估:预演目标负载下的内存水位
- 参数对比:改动前先用模拟负载确认方向
- 上线前演练:在预发环境跑一遍,减少生产试错
- 策略换挡验证:切换淘汰策略后重跑同一模型,确认命中率与内存的变化方向
运行与对照
运行与对照
redis-cli --lru-test 100000 # 模拟十万键的缓存负载
redis-cli --lru-test 100000 -c 20 # 指定并发,记录使用的参数
redis-cli INFO stats | grep -E 'keyspace_hits|keyspace_misses' # 对照命中率
redis-cli CONFIG GET maxmemory-policy # 记录当时的淘汰策略
redis-cli --latency-history -i 5 # 同时观察延迟变化预演关注项
| 关注项 | 为什么看 | 注意 |
|---|---|---|
| 命中率 | 缓存容量是否够用 | 要与真实访问分布对比才有意义 |
| 内存水位 | 容量是否足够 | 测试键空间本身会占用内存 |
| 淘汰次数 | 淘汰是否频繁 | 频繁淘汰说明容量偏紧 |
| 延迟波动 | 高负载下的响应 | 结合时间序列判断 |
在隔离实例上跑:测试过程会写入大量键,在生产实例上执行会污染真实键空间与命中率统计,事后清理也很麻烦。
把模拟结果直接当业务容量:模拟的访问分布与真实业务总有差距,结论只能作参考,最终容量仍要依据线上指标确定。