LRU 和 LFU 的优缺点分别是什么?
参考资料
- LRU 和 LFU 的优缺点分别是什么?
- 如何在 Redis 中配置 LFU 淘汰策略?
- Redis7.4 内存淘汰策略说明
- Redis 6 种内存淘汰策略完整说明
- LRU vs LFU 核心区别
- OOM command not allowed when used memory > 'maxmemory' 表明 Redis 实例当前的内存使用量已经达
- 如何配置 Redis 的淘汰策略?
- RedisException vendor/laravel/framework/src/Illuminate/Redis/Connections/Connection.php:122 OOM command not allowed when used memory > 'maxmemory'.
LRU 和 LFU 的优缺点分别是什么?
LRU(最近最少使用)优缺点
核心:淘汰最久没有访问的 key
✅ 优点
逻辑简单直观,Redis 的是采样近似 LRU,CPU 开销低。
适配热点会快速变化的场景(活动缓存、首页、临时查询缓存),新热点访问后立刻更新时间戳,快速被保护。
兜底能力强:即使 key没有设置 TTL,内存满的时候依然可以被淘汰(
allkeys-lru),适合 Laravel 缓存,防止忘记加 TTL 导致 OOM。对一次性临时数据友好:一段时间不用就会被视作冷数据。
❌ 缺点
会被单次偶然访问污染:一条很久不用的冷 key,只要被访问一次,就更新访问时间,变成 “热 key”,短期不容易被淘汰。
举例:爬虫一次性查询大量冷门数据,这批 key 全部更新时间,挤占内存,把真正长期热点挤出去。
无法区分「偶尔访问一次」和「高频持续访问」的 key,只看最后访问时间,不看访问次数。
突发批量读会产生大量短期存活 key,占用内存。
LFU(最少访问频次)优缺点
核心:淘汰访问次数最少的 key
✅ 优点
识别真正的热点,不受单次偶然访问干扰。哪怕刚访问过,如果总共只访问 1 次,依然属于冷 key,优先淘汰。
适合长期稳定热点:基础字典、系统配置、固定基础数据,高频访问的 key 会被持续保护。
Redis LFU 自带计数器衰减(
lfu-decay-time),热点过期后计数会慢慢下降,不会永久保留旧热点。
❌ 缺点
热点切换慢的场景才好用;热点快速变化场景不友好。比如短期活动缓存,活动结束后旧热点的计数还很高,迟迟释放不了内存。
相比 LRU,有少量额外开销维护访问计数器。
新 key 刚创建时计数很低,容易被误淘汰(可以调整
lfu-log-factor优化)。衰减参数如果调不好,会出现旧热点长期占内存。
快速对比总结
表格
| LRU | LFU | |
|---|---|---|
| 判断依据 | 最后访问时间 | 一段时间内访问频次 |
| 优势 | 热点切换快,简单,适合临时缓存 | 识别真实热点,抗单次访问干扰 |
| 短板 | 单次访问即可 “续命” 冷 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优化摘要
LRU 和 LFU 的优缺点分别是什么?主要讲了什么?
LRU(最近最少使用)优缺点核心:淘汰最久没有访问的 key✅ 优点逻辑简单直观,Redis 的是采样近似 LRU,CPU 开销低。适配热点会快速变化的场景(活动缓存、首页、临时查询缓存),新热点访问后立刻更新时间戳,快速被保护。兜底能力强:即使 key没有设置 TTL,内存满的时候依然可以被淘汰(allkeys-lru),适合 Laravel 缓存,防止忘...
LRU 和 LFU 的优缺点分别是什么?适合哪些人参考?
适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。
阅读LRU 和 LFU 的优缺点分别是什么?时应重点看哪些内容?
建议重点关注标题、摘要、正文说明、图片资料和更新时间。
- 建议补充封面或内容图片。
- 建议补充标签,帮助识别主题边界。
时间:2026-10-15
来源:https://bt.ciilii.com/

