首页/数据/Redis 进阶速查/redis-cli --lru-test 缓存负载模拟
性能与排障129 条

redis-cli --lru-test 缓存负载模拟

redis-cli --lru-test <keys> 模拟带倾斜访问分布的缓存负载,用于观察真实缓存模式下的命中与内存表现。

Redis 进阶速查数据更新于 2026-10-13

缓存负载模拟

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             # 同时观察延迟变化

预演关注项

关注项为什么看注意
命中率缓存容量是否够用要与真实访问分布对比才有意义
内存水位容量是否足够测试键空间本身会占用内存
淘汰次数淘汰是否频繁频繁淘汰说明容量偏紧
延迟波动高负载下的响应结合时间序列判断
在隔离实例上跑:测试过程会写入大量键,在生产实例上执行会污染真实键空间与命中率统计,事后清理也很麻烦。
把模拟结果直接当业务容量:模拟的访问分布与真实业务总有差距,结论只能作参考,最终容量仍要依据线上指标确定。

易错点

  • 在生产实例上直接跑:键空间被测试数据污染,命中率与容量指标失真
  • 把模拟结果直接当业务容量:访问模式与真实业务存在差距,结论过于乐观
  • 不记录模拟参数:键数、并发、分布模型没记下来,结果无法复现
  • 只看命中率不看内存水位:命中率达标但内存已接近上限,上线后立刻触发淘汰

数据来源与参考

  • Redis 官方文档:--lru-test 选项
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌