Redis LFU 策略参数配置指南
一、基础配置步骤
设置内存上限
在 redis.conf 配置文件中添加以下指令,限制 Redis 最大内存使用量(例如设置为 4GB):
maxmemory 4gb
选择 LFU 淘汰策略
根据键的作用域选择策略:
# 所有键参与淘汰
maxmemory-policy allkeys-lfu
# 仅有过期时间的键参与淘汰
maxmemory-policy volatile-lfu
动态配置(运行时生效)
通过 CONFIG SET 命令动态调整策略(无需重启 Redis):
CONFIG SET maxmemory-policy allkeys-lfu
二、核心调优参数
lfu-log-factor(访问频率计数器系数)
作用:控制访问频率计数器(logc)的增长速度。值越大,计数器增长越慢,高频键越难被淘汰。
默认值:10
建议调整场景:
高并发场景(如瞬时访问激增):增大该值(如 20),避免短期高频访问导致计数器膨胀过快。
需要严格区分高频/低频键:降低该值(如 5),加速计数器增长。
配置示例:
CONFIG SET lfu-log-factor 15
lfu-decay-time(频率衰减时间窗口)
作用:定义访问频率的衰减周期(单位:分钟)。Redis 会根据该值定期衰减 logc 值,避免历史高频但近期无访问的键长期驻留。
默认值:1(每分钟触发一次衰减)
建议调整场景:
数据访问模式稳定:增大该值(如 10),减少衰减频率,保留长期高频键。
需要快速淘汰旧数据:减小该值(如 0.5),加速低频键的淘汰。
配置示例:
CONFIG SET lfu-decay-time 5
三、场景化配置建议
场景 推荐配置 说明
热点数据缓存 lfu-log-factor=10 lfu-decay-time=1 默认配置,平衡高频键保留与旧数据淘汰效率。
突发流量过滤 lfu-log-factor=20 抑制短期高频访问对计数器的过度影响,避免误淘汰长期高频键。
历史数据长期保留 lfu-decay-time=30 降低衰减频率,保留历史高频访问但近期未活跃的数据(如日志分析场景)。
内存敏感型应用 maxmemory-samples=10 增大淘汰候选集抽样数量(默认5),提升淘汰精准度,但略微增加CPU开销。
四、验证配置生效
查看当前配置:
CONFIG GET maxmemory-policy
CONFIG GET lfu-log-factor
CONFIG GET lfu-decay-time
监控淘汰效果:
使用 INFO stats 命令观察 evicted_keys 和 keyspace_hits 指标,评估淘汰策略是否匹配业务访问模式。
通过合理调整上述参数,可在内存限制下最大化高频数据的缓存命中率,平衡性能与资源消耗。