首页/数据/Redis 进阶速查/LFU 双参数:log-factor 与 decay-time
内存与管理99 条

LFU 双参数:log-factor 与 decay-time

lfu-log-factor 控制频率计数增长的对数曲线(越大越难涨),lfu-decay-time 控制衰减速度(单位分钟,访问间隔超过该值计数器减一档)。

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

频率计数的两个旋钮

LFU 策略有两个调参入口。log-factor 控制访问频率计数的增长曲线,默认值 10,数值越大计数增长越慢,也就是需要更多次访问才能体现出热度差异;decay-time 控制衰减速度,单位是分钟,某个键超过这个时长没有被访问,它的频率计数就会按指数规律递减。两个参数要按业务真实的访问周期来校准,否则热度判断会失真。

基本信息

计数增长参数log-factor,默认 10,越大增长越慢
衰减参数decay-time,默认 1 分钟,单位是分钟
生效前提淘汰策略为 LFU 系时才有实际意义
查看方式查看键的访问频率与该键是否可用
校准依据业务真实访问周期与热点集中程度

典型使用场景

  • 热点集中且访问频次差异大,用 LFU 提升缓存命中率后进一步调参
  • 业务访问周期较长(例如每天一次),避免频率被过度衰减
  • 排查重启或调参后命中率突然下降,确认计数曲线的变化
  • 对比不同参数下的命中率,用真实流量决定取值
  • 排查某些长期热键被误淘汰的现象

查看与调整

查看与调整
redis-cli CONFIG GET maxmemory-policy lfu-log-factor lfu-decay-time
redis-cli OBJECT FREQ mykey                  # 查看某个键当前的访问频率
redis-cli CONFIG SET lfu-log-factor 10       # 默认值,越大计数增长越慢
redis-cli CONFIG SET lfu-decay-time 5        # 衰减更慢,适合访问周期长的业务
redis-cli INFO stats | grep -E 'evicted_keys'

参数影响

参数调大的效果适用判断
log-factor计数增长更慢,需要更多访问才拉开差距访问量极大、希望抑制噪声时
log-factor 调小计数增长更快,热度差异更早体现访问量偏小时让热点更快浮现
decay-time衰减更慢,低频键不容易掉档访问周期长的业务
decay-time 很小计数快速归零,热度判断近似随机一般不建议,除非访问极其密集
访问周期长的业务要把衰减时间调大,否则一个每天才被访问一次的键,每次访问前计数都已经衰减到底,热度无法累积。
调参之前先记录当前的命中率与淘汰计数作为基线,否则调整之后无法判断方向对错,只能靠感觉来回试。

易错点

  • 衰减时间设置过小,所有键的频率持续归零,LFU 退化成近似随机淘汰
  • 在不使用 LFU 策略的实例上调整这两个参数,改了也没有任何效果
  • 调参前不留基线数据,命中率变化后无法判断是否与本次调整有关
  • 把 log-factor 调得过大,热点键与普通键的计数长期接近,热度区分度反而下降

数据来源与参考

  • Redis 官方文档:LFU 参数调节说明
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌