首页/数据/Redis 进阶速查/淘汰尽力值:maxmemory-eviction-tenacity
内存与管理99 条

淘汰尽力值:maxmemory-eviction-tenacity

maxmemory-eviction-tenacity(默认 10)控制内存超限时 Redis 在淘汰上投入的力度,值越高越积极回收,代价是更多 CPU 与延迟。

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

淘汰的尽力程度

maxmemory-eviction-tenacity 决定内存超限时 Redis 愿意花多大力气把内存压回上限之内:值越高越坚决,代价是单次操作耗时变长、延迟波动更大;值越低越温和,但短时超限的状态会持续更久,写入被拒的窗口也随之拉长。

基本信息

配置项maxmemory-eviction-tenacity
默认值10
取值区间0 到 100
作用范围内存逼近上限时的淘汰努力程度

典型使用场景

  • 偶发写入报错,想减少内存超限的持续时间
  • 低延迟优先的业务,希望淘汰更温和
  • 与淘汰策略配合做细粒度调优
  • 排查「超限后长时间回不到上限内」
  • 压测中观察不同取值对尾部延迟的影响

调整与观察

调整与观察
# 查看当前值(默认 10)
redis-cli CONFIG GET maxmemory-eviction-tenacity
# 允许更积极的回收,缩短写入被拒的窗口
redis-cli CONFIG SET maxmemory-eviction-tenacity 30
# 低延迟优先的场景保持或调低
redis-cli CONFIG SET maxmemory-eviction-tenacity 10
# 改完看淘汰计数与延迟事件,判断代价是否可接受
redis-cli INFO stats | grep evicted_keys
redis-cli LATENCY LATEST

取值效果对照

取值行为适用场景
0-10淘汰努力低,超限状态持续时间长对延迟极敏感、可容忍偶发写入失败
10默认值,兼顾回收与延迟多数生产场景
30 左右更积极回收,延迟波动上升偶发写入被拒且能接受抖动
100尽全力淘汰,单次操作耗时明显对写入失败更敏感、延迟容忍度高
maxmemory-policy决定淘汰哪些键与 tenacity 配合理解
这个参数只改变「努力程度」,不改变「淘汰谁」;调整顺序通常是先定淘汰策略,再用 tenacity 微调节奏。
用 CONFIG SET 改只对当前运行实例生效,重启后会回到配置文件里的取值;多实例环境记得同步修改配置模板,否则重启后参数静默失效。
调高之后如果延迟抖动明显变大,应该回到内存根因(数据增长、客户端缓冲、大键)上处理,而不是继续加码参数。

易错点

  • 只调 tenacity 不改策略 → 淘汰逻辑本身不适合业务,力度再大也解决不了命中率问题 → 先确认策略与数据热度分布
  • 为「不报错」把值调到很高 → 单次命令耗时拉长,尾部延迟恶化 → 结合延迟指标循序渐进调整
  • 改完参数不做基线对比 → 收益无法量化,下一轮调优没有依据 → 调整前后各采集一次淘汰计数与延迟
  • 在多实例上零散调整 → 行为不一致,故障时难以判断 → 参数纳入统一配置模板

数据来源与参考

  • Redis 官方文档:eviction tenacity 配置
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌