参考资料

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

Redis 6 种内存淘汰策略完整说明

Redis 6 种内存淘汰策略完整说明

触发条件:Redis 使用内存达到 maxmemory 上限时,才会执行淘汰策略

  1. noeviction
    内存满了,不删除任何 key;写命令直接返回 OOM 错误(就是你当前报错),读命令正常。

  • 适用:存放不能丢失的重要业务数据,不适合做缓存。

  • 缺点:内存不扩容就会持续报错,Laravel 缓存场景绝对不推荐。

  1. allkeys-lru ✅ Laravel 缓存首选
    在全部 key里,优先淘汰**最近最少使用(LRU)**的 key。不管 key 有没有设置过期时间。

  • 优点:自动清理冷缓存,不用担心忘记加 TTL 导致内存溢出。

  • 风险:内存紧张时,可能删掉正在使用的缓存,引发缓存击穿,业务要做好兜底(查数据库)。

  1. volatile-lru
    只在**设置了过期时间(TTL)**的 key 中,淘汰最近最少使用的 key;没有过期时间的 key 永久保留。

  • 缺点:如果存在大量永久 key(无 TTL),永久 key 持续增长,最后依旧 OOM。

  • 适用:部分 key 需要永久保留,只有带过期的可以清理的混合场景。

  1. allkeys-lfu
    在全部 key里,优先淘汰**访问频次最低(LFU)**的 key。

LFU:按访问次数,长期很少被读取的优先删;LRU 是按上次访问时间。

  • 适合:热点长期稳定的缓存,比如基础字典、配置缓存。

  1. volatile-lfu
    只在带 TTL 的 key中淘汰访问频次最低的 key;无 TTL 的 key 不会被清理。

  2. volatile-random
    只在带 TTL 的 key里随机删除 key,不看访问时间 / 频次。

  • 很少用,淘汰逻辑不可控。

  1. volatile-ttl
    只在带 TTL 的 key里,优先删除剩余过期时间最短的 key。

  • 适合:希望优先清快要到期的缓存。


快速选型小结

表格

场景推荐策略
Laravel Redis 缓存(允许丢缓存)allkeys-lru
混合存储:永久业务 key + 过期缓存 keyvolatile-lru / volatile-lfu
Redis 存核心持久数据,不能丢noeviction(需要做好内存监控扩容)

补充两个重点提醒

  1. LRU 不是精确 LRU
    Redis LRU 是采样近似算法,不会遍历全部 key,性能开销很小,不用怕 CPU 压力。

  2. 缓存击穿问题allkeys-lru 下 Redis 主动删 key,大量请求同时访问被删掉的缓存,会打到数据库。
    应对方案:

  • 加锁(Laravel cache()->lock())

  • 缓存预热

  • 降级兜底

  • 控制 maxmemory 不要跑满,预留内存缓冲

AIGEO优化摘要

AI可读摘要:Redis 6 种内存淘汰策略完整说明触发条件:Redis 使用内存达到 maxmemory 上限时,才会执行淘汰策略noeviction内存满了,不删除任何 key;写命令直接返回 OOM 错误(就是你当前报错),读命令正常。适用:存放不能丢失的重要业务数据,不适合做缓存。缺点:内存不扩容就会持续报错,Laravel 缓存场景绝对不推荐。allkeys-l...
常见问题:
Redis 6 种内存淘汰策略完整说明主要讲了什么?

Redis 6 种内存淘汰策略完整说明触发条件:Redis 使用内存达到 maxmemory 上限时,才会执行淘汰策略noeviction内存满了,不删除任何 key;写命令直接返回 OOM 错误(就是你当前报错),读命令正常。适用:存放不能丢失的重要业务数据,不适合做缓存。缺点:内存不扩容就会持续报错,Laravel 缓存场景绝对不推荐。allkeys-l...

Redis 6 种内存淘汰策略完整说明适合哪些人参考?

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

阅读Redis 6 种内存淘汰策略完整说明时应重点看哪些内容?

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

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