当前位置: 首页 > news >正文

Redis 内存淘汰策略(8 种)

🚀 一、Redis 内存淘汰策略总览(8 种)

Redis 只在 内存满(到 maxmemory) 时触发淘汰。

分两大类:


🟩 ① 针对“设置了过期时间的 key”(常用)

策略 说明
volatile-lru 在过期集合中挑最近最少使用的 key
volatile-lfu 在过期集合中挑最少频次访问的 key
volatile-ttl 在过期集合中优先删除“快要到期”的 key
volatile-random 在过期集合中随机删

🟥 ② 针对“全体 key”(包含不过期 key)

策略 说明
allkeys-lru 在所有 key 中挑最近最少使用的 key
allkeys-lfu 在所有 key 中挑最少访问频次的 key
allkeys-random 所有 key 中随机删除
noeviction 不删除,直接报错(返回 OOM 错误)

这八个策略你必须一口背下来,这是 Redis 面试最容易出“背诵题”的地方。


🎨 二、图解(分类图 + 原理图)

🖼 1. 策略分类图

           Redis 淘汰策略(8 种)│┌────────┴────────┐针对只对“带过期时间 key”     针对“所有 key”│                      │┌────────┼────────┐       ┌───────┼─────────┐
volatile-lru   volatile-lfu   allkeys-lru    allkeys-lfu
volatile-ttl   volatile-random allkeys-random noeviction

🖼 2. LRU 图(最近最少使用)

[Key1] → [Key2] → [Key3] → [Key4]最近访问                        最久未访问
淘汰:从右边删

🖼 3. LFU 图(访问频率)

访问次数:
KeyA:1 次
KeyB:5 次
KeyC:10 次
KeyD:2 次淘汰:删访问次数最少的 → KeyA

🖼 4. volatile-ttl 图(删除 TTL 最短的)

KeyA:TTL = 90s
KeyB:TTL = 3s ← 最快过期
KeyC:TTL = 45s淘汰:KeyB

🧩 三、每种策略的业务使用场景

1)allkeys-lru(最常用)

缓存场景首选,适合热点数据明显。

例如:

  • 商品详情缓存
  • 用户信息缓存
  • 内容阅读缓存
  • Feed 流热点读取

优势:

  • 热点数据永远在内存
  • 淘汰最久没访问的 key
  • 不依赖 TTL(可以不用设置过期)

2)allkeys-lfu(Redis 4.0+)

热点访问具有“长期”倾向的场景。

例如:

  • 推荐系统:爆款文章
  • 视频平台:长期热门内容
  • 直播间信息:用户一直点同一个房间

比 LRU 更精准(避免偶发突刺访问导致缓存污染)


3)volatile-lru

只在“过期 key 集合”里淘汰。

适合:

  • 大多数 key 都设置 TTL
  • 少量 key(例如配置)不想被淘汰

4)volatile-ttl

优先删除“马上过期的 key”。

适合:

  • 大批量定时自动过期的数据
  • 秒杀场景中的临时库存 key
  • 登录态 key(快过期就删掉没事)

5)volatile-random / allkeys-random

随机删除。

基本只在“实验场景”用。生产一般不用。


6)noeviction

内存满 = 写入失败。

适合:

  • Redis 被当作 消息队列
  • Redis 做 持久性计数器
  • 内存不能随便删(如广告扣费、计费系统)

多数恢复方案:

  • 加内存
  • 扩容集群

🔥 四、面试必问:Redis 淘汰策略与业务场景如何选择?

📌 缓存业务(高并发读多写少)

👉 allkeys-lru(99% 场景选它)

📌 有热点但追求更稳定的命中率

👉 allkeys-lfu

📌 必须保留某些不设置过期时间的 key

👉 volatile-lru / volatile-lfu

📌 数据天然有 TTL,快过期无所谓

👉 volatile-ttl

📌 强一致性计费、上下文、计数器

👉 noeviction


🧠 五、面试高频追问(我帮你准备好答案)


❓ Q1:为什么建议 allkeys-lru 而不是 volatile-lru?

因为:

  • 许多缓存 key 本来就不一定设置 TTL
  • volatile-lru 只在 TTL 集中删 key
  • 没 TTL 的 key 越堆越多 → 其实更容易 OOM

👉 allkeys-lru 更稳定可靠。


❓ Q2:Redis 4.0 引入 LFU 的目的?

因为 LRU 会被“偶发热点”污染。

例如有人刷接口一次性读 10 万个冷数据,LRU 就错乱了。

LFU 能识别:

  • 真正的热点(多次、长期)
  • 偶发高峰不会影响驱逐逻辑

❓ Q3:选错策略会怎样?

  • 命中率下降(最直接结果)
  • QPS 降低
  • 回源数据库压力暴涨 → 雪崩

选对策略有时比扩容更有效。


🏁 六、终极总结(背就完了)

Redis 内存淘汰策略 8 种:
volatile-lru / volatile-lfu / volatile-ttl / volatile-random
allkeys-lru / allkeys-lfu / allkeys-random / noeviction常用:
allkeys-lru(缓存)
allkeys-lfu(热点更稳定)不常用:
random、ttl不用:
noeviction(除非你真的需要强一致)触发条件:
内存达到 maxmemory 才会淘汰
http://www.zskr.cn/news/73266.html

相关文章:

  • 小米汽车在智能座舱使用消费级芯片,你怎么看
  • 大雪将至,码上围炉 | Copdigger邀你共赴一场静默的「深度更新」
  • rust语言常用属性
  • AI一周资讯 251129-251205
  • 高性价比家政服务公司推荐,广州喜相缘家政实力上榜
  • 2025年AI知识库本地化部署厂商全景扫描:如何把大模型装进企业“保险箱”
  • 从结构化到多模态,AI 时代如何利用多模态数据智能中台激活业务价值?
  • 2025年苏州地区信誉好的西餐培训学院推荐TOP5,专业西餐
  • 2025年泥浆土压变送器工厂权威推荐榜单:泥浆油脂压力变送器‌/盾构机土压变送器‌/盾构油压变送器‌‌源头工厂精选
  • 2025年知识库本地化部署厂商:企业智能安全升级的核心路径
  • 阵列信号处理中的自适应波束形成技术
  • Flutter部件出场即动画,不显示时不占用空间不占内存
  • C# 深浅拷贝、值类型、引用类型浅析
  • 2025 美国 EOR 名义雇主推荐:Safeguard Global人力资源服务专家
  • 交通事故法律服务口碑排名 2026:权威解析专业机构选择指南
  • 【GitHub】安装以及配置远程仓库 - zhiao
  • 2025年安全隔离栅优质仪器五大厂家推荐,工业自动化防护设备
  • 2025年全屋定制源头工厂实力排名,精选全屋定制制造厂推荐
  • 2025年江浙沪网带炉实力供应商TOP5排行榜,专业网带炉厂
  • KFD 驱动如何管理 Compute Queue(计算队列)
  • 2025年12月一物一码公司排名深度解析
  • 2026助力发刊:深度学习MOF材料专题学习 - 教程
  • 2025 年 12 月黔南刺梨原浆,贵州刺梨原液最新推荐,产能、专利、环保三维数据透视!
  • 2025年取暖器品牌权威推荐榜单:壁挂炉/制热中央空调/制暖空调品牌精选
  • 2025 年淮安装修公司最新推荐榜,聚焦企业服务能力、施工品质与市场口碑深度解析淮安半包,淮安整装,淮安全屋定制,淮安系统门窗,淮安全屋设计装修公司
  • 2025年度康养旅居楼盘TOP5权威推荐:聚焦医疗配套与服务
  • 2025年度园区智慧食堂服务商TOP5权威推荐:赋能食堂数字
  • 2025年饮品行业必备:纸咖啡杯制造机如何帮您降低成本、塑造品牌?
  • yuv转rgb的bat脚本
  • 2025 年四川特产厂家最新推荐榜,聚焦企业原料把控、工艺创新与市场口碑深度解析广味四川特产,下火锅的四川特产,重庆麻辣四川特产,台式四川特产,老字号四川特产,地道四川特产公司推荐