参考资料

  1. Redis7.4 内存淘汰策略说明
  2. LRU vs LFU 核心区别
  3. Redis 6 种内存淘汰策略完整说明
  4. RedisException vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php:122 OOM command not allowed when used memory > 'maxmemory'.
  5. 如何在 Redis 中配置 LFU 淘汰策略?
  6. LRU 和 LFU 的优缺点分别是什么?
  7. OOM command not allowed when used memory > 'maxmemory' 表明 Redis 实例当前的内存使用量已经达
  8. 如何配置 Redis 的淘汰策略?

Redis7.4 内存淘汰策略说明

Redis7 内存淘汰策略说明

✅ Redis7 的 LRU / LFU 配置语法和 Redis4/5/6 完全兼容,LFU 依旧支持 lfu-log-factor、lfu-decay-time,8 种淘汰策略全部保留。
新增:Redis7.0 引入 LRM(least recently modified,最近最少修改) 策略 allkeys-lrm / volatile-lrm(按最后修改时间淘汰,不是访问时间,一般很少用)Redis

Redis7 全部 8 种淘汰策略

  1. noeviction:内存满,写命令报错(就是你 Laravel 遇到的 OOM 报错,默认不是这个)

  2. allkeys-lru:所有 key,淘汰最久未访问(Laravel 缓存首选✅)

  3. volatile-lru:仅带 TTL 的 key,淘汰最久未访问

  4. allkeys-lfu:所有 key,淘汰访问频次最低

  5. volatile-lfu:仅带 TTL 的 key,淘汰访问频次最低

  6. volatile-random:带 TTL 的 key 随机删

  7. volatile-ttl:带 TTL 的 key 优先删剩余存活最短

  8. allkeys-random:全部 key 随机删

Redis7 默认淘汰策略:volatile-lru

Redis7 配置 LFU(allkeys-lfu)

1. 在线临时配置(redis-cli,立刻生效,重启丢失)

# 设置最大内存,必须配置!
redis-cli CONFIG SET maxmemory 2gb

# 开启LFU
redis-cli CONFIG SET maxmemory-policy allkeys-lfu

# LFU调参,Redis7同样支持
redis-cli CONFIG SET lfu-decay-time 1
redis-cli CONFIG SET lfu-log-factor 10

# 校验
redis-cli CONFIG GET maxmemory
redis-cli CONFIG GET maxmemory-policy
redis-cli CONFIG GET lfu-decay-time
redis-cli CONFIG GET lfu-log-factor

2. redis.conf 永久配置(生产推荐)

# 最大内存,预留系统内存,不要占满整机
maxmemory 2gb

# LFU策略
maxmemory-policy allkeys-lfu

# LFU参数
lfu-decay-time 1
lfu-log-factor 10

# LRU/LFU采样数量,默认5;越大精度越高,CPU消耗越高
maxmemory-samples 5

改完重启 redis:

systemctl restart redis

Redis7 内存相关新增特性(对你场景有用)

  1. maxmemory-clients(7.0 新增):限制客户端连接占用内存,防止大量客户端缓冲区吃光内存

maxmemory-clients 100mb
  1. active-expire-effort:主动过期扫描力度(1~10),加快过期 key 清理,减少内存堆积

active-expire-effort 1
  1. 内存碎片整理优化,MEMORY PURGE 性能提升

  2. Redis7.4 新增 Hash 字段单独设置 TTL(HPEXPIRE),可以给 hash 内单个 field 设置过期,适合 Laravel 部分场景

Redis7 LRU vs LFU 选型(结合你的 Laravel 项目)

  • allkeys-lru(推荐大多数 Laravel 缓存)
    热点经常变化、活动缓存、临时查询缓存;就算忘记给 key 加 TTL,内存满会自动清理冷 key,兜底强。

  • allkeys-lfu
    适合长期稳定热点,比如字典、基础配置;不适合短期活动缓存(旧热点计数衰减慢)。

⚠️ 重要提醒:
Redis7 集群:每个主节点独立 maxmemory,单独触发淘汰,不是集群整体内存上限。

查看 key 的 LFU 计数器(Redis7 可用)

redis-cli OBJECT freq yourkey

推荐 Laravel+Redis7 最终配置(缓存实例)

maxmemory 2gb
maxmemory-policy allkeys-lru
maxmemory-samples 5
active-expire-effort 1

队列实例单独部署,队列不要用 allkeys-lru,队列 job 不能被 Redis 自动淘汰,队列实例使用 noeviction,单独监控内存。

AIGEO优化摘要

AI可读摘要:Redis7 内存淘汰策略说明✅ Redis7 的 LRU / LFU 配置语法和 Redis4/5/6 完全兼容,LFU 依旧支持 lfu-log-factor、lfu-decay-time,8 种淘汰策略全部保留。新增:Redis7.0 引入 LRM(least recently modified,最近最少修改) 策略 allkeys-lrm / vol...
常见问题:
Redis7.4 内存淘汰策略说明主要讲了什么?

Redis7 内存淘汰策略说明✅ Redis7 的 LRU / LFU 配置语法和 Redis4/5/6 完全兼容,LFU 依旧支持 lfu-log-factor、lfu-decay-time,8 种淘汰策略全部保留。新增:Redis7.0 引入 LRM(least recently modified,最近最少修改) 策略 allkeys-lrm / vol...

Redis7.4 内存淘汰策略说明适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读Redis7.4 内存淘汰策略说明时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:75/100
  • 建议补充封面或内容图片。
  • 建议补充标签,帮助识别主题边界。
作者:王壹杰
时间:2026-10-15
来源:https://bt.ciilii.com/