参考资料

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

LRU 和 LFU 的优缺点分别是什么?

LRU(最近最少使用)优缺点

核心:淘汰最久没有访问的 key

✅ 优点

  1. 逻辑简单直观,Redis 的是采样近似 LRU,CPU 开销低。

  2. 适配热点会快速变化的场景(活动缓存、首页、临时查询缓存),新热点访问后立刻更新时间戳,快速被保护。

  3. 兜底能力强:即使 key没有设置 TTL,内存满的时候依然可以被淘汰(allkeys-lru),适合 Laravel 缓存,防止忘记加 TTL 导致 OOM。

  4. 对一次性临时数据友好:一段时间不用就会被视作冷数据。

❌ 缺点

  1. 会被单次偶然访问污染:一条很久不用的冷 key,只要被访问一次,就更新访问时间,变成 “热 key”,短期不容易被淘汰。

举例:爬虫一次性查询大量冷门数据,这批 key 全部更新时间,挤占内存,把真正长期热点挤出去。

  1. 无法区分「偶尔访问一次」和「高频持续访问」的 key,只看最后访问时间,不看访问次数。

  2. 突发批量读会产生大量短期存活 key,占用内存。


LFU(最少访问频次)优缺点

核心:淘汰访问次数最少的 key

✅ 优点

  1. 识别真正的热点,不受单次偶然访问干扰。哪怕刚访问过,如果总共只访问 1 次,依然属于冷 key,优先淘汰。

  2. 适合长期稳定热点:基础字典、系统配置、固定基础数据,高频访问的 key 会被持续保护。

  3. Redis LFU 自带计数器衰减(lfu-decay-time),热点过期后计数会慢慢下降,不会永久保留旧热点。

❌ 缺点

  1. 热点切换慢的场景才好用;热点快速变化场景不友好。比如短期活动缓存,活动结束后旧热点的计数还很高,迟迟释放不了内存。

  2. 相比 LRU,有少量额外开销维护访问计数器。

  3. 新 key 刚创建时计数很低,容易被误淘汰(可以调整 lfu-log-factor 优化)。

  4. 衰减参数如果调不好,会出现旧热点长期占内存。


快速对比总结

表格


LRULFU
判断依据最后访问时间一段时间内访问频次
优势热点切换快,简单,适合临时缓存识别真实热点,抗单次访问干扰
短板单次访问即可 “续命” 冷 key旧热点计数衰减慢,新 key 容易被清
Laravel 缓存推荐✅ allkeys-lru(大多数场景)⚠️ allkeys-lfu 适合固定字典 / 配置缓存

你的场景提示

你当前报错是内存打满 OOM,优先选 allkeys-lru。
因为项目很可能存在部分缓存 key 忘记写 TTL,allkeys-lru 可以兜底清理。
如果业务是大量固定不变的基础字典缓存,热点长期稳定,再考虑 allkeys-lfu。

要不要我给你 LFU 的两个参数 lfu-decay-time 和 lfu-log-factor 的配置说明?

LFU算法的核心实现原理是什么?

如何在Redis中配置LFU淘汰策略?

LRU和LFU的使用场景分别是什么?

AIGEO优化摘要

AI可读摘要:LRU(最近最少使用)优缺点核心:淘汰最久没有访问的 key✅ 优点逻辑简单直观,Redis 的是采样近似 LRU,CPU 开销低。适配热点会快速变化的场景(活动缓存、首页、临时查询缓存),新热点访问后立刻更新时间戳,快速被保护。兜底能力强:即使 key没有设置 TTL,内存满的时候依然可以被淘汰(allkeys-lru),适合 Laravel 缓存,防止忘...
常见问题:
LRU 和 LFU 的优缺点分别是什么?主要讲了什么?

LRU(最近最少使用)优缺点核心:淘汰最久没有访问的 key✅ 优点逻辑简单直观,Redis 的是采样近似 LRU,CPU 开销低。适配热点会快速变化的场景(活动缓存、首页、临时查询缓存),新热点访问后立刻更新时间戳,快速被保护。兜底能力强:即使 key没有设置 TTL,内存满的时候依然可以被淘汰(allkeys-lru),适合 Laravel 缓存,防止忘...

LRU 和 LFU 的优缺点分别是什么?适合哪些人参考?

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

阅读LRU 和 LFU 的优缺点分别是什么?时应重点看哪些内容?

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

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