首页 >文档 > redis缓存策略

redis缓存策略

面试鸭返利网是程序员求职必备的面试资源平台,提供2025最新Java面试宝典、大厂真题库及Redis缓存策略等高频考点解析。通过本站购买面试鸭会员可享独家25元返利,全网最低价解锁海量技术题库。涵盖缓存穿透、击穿、雪崩解决方案,LRU/LFU内存淘汰策略对比等实战干货,助力快速斩获offer。每日更新一线互联网公司面经,现在访问还可领取布隆过滤器、分布式锁等进阶资料包!

Redis缓存策略详解:面试必考技术点剖析

作为程序员,Redis缓存策略是面试中的高频考点。今天我们就以真实面试场景的口述形式,深入解析几大核心策略及其应用场景。


💡 缓存读写策略

1️⃣ Cache-Aside(旁路缓存)

这是最常用的策略。读流程:先查缓存,命中则返回;未命中则查数据库,回填缓存。写流程:直接更新数据库,再删除缓存(注意不是更新缓存!)。
面试坑点

  • 为什么删缓存而不是更新?避免并发写导致脏数据(如线程A更新DB→线程B更新DB→线程B更新缓存→线程A更新缓存,最终缓存是A的旧值)。
  • 极端场景下仍可能脏读(查缓存空→查DB旧值→回填缓存前发生写操作删缓存→回填旧值),可通过延迟双删缓解。

2️⃣ Write-Through(穿透写)

写请求同时更新缓存和数据库,由缓存层保证数据一致性。适合写多读少场景,但对缓存可用性要求极高。
关键问题:DB挂了怎么办?需引入写队列异步重试。

3️⃣ Write-Back(回写)

写请求只更新缓存,异步批量刷入数据库。性能极高但可能丢数据(如缓存宕机),适合日志类业务。

缓存策略对比图


🛡️ 缓存异常场景解决方案

🔸 缓存穿透(查不存在的数据)

典型case:频繁请求user_id=-1的数据
解法

  1. 布隆过滤器拦截非法Key(注意假阳性问题)
  2. 缓存空值并设短TTL(如SET null 5s

🔸 缓存击穿(热点Key突然失效)

典型case:明星离婚导致微博热搜缓存过期
解法

  1. 互斥锁:仅一个线程回源DB,其他等待
  2. 逻辑过期:缓存Value中存储过期时间,异步刷新

🔸 缓存雪崩(大量Key同时失效)

典型case:零点促销导致缓存集体过期
解法

  1. 过期时间加随机因子(如TTL = base + rand(0,300)
  2. 集群分片:不同节点缓存不同数据集

缓存异常处理


⚙️ 内存淘汰策略选择

Redis内存满时的6种策略:

  1. volatile-lru → 淘汰有过期时间的最近最少用Key
  2. allkeys-lfu → 全量Key中淘汰最不常用
    面试重点
  • LRU vs LFU:前者看最近使用时间,后者看使用频次
  • 高频读场景选LFU,突发扫描选LRU

📌 资源福利

2025 Java面试宝典合集
🔹 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
🔹 提取码: 9b3g


💰 特别提醒

如果需要购买面试鸭会员,可通过 面试鸭返利网 联系我,额外返利25元!用全网最低价解锁大厂真题库和专项题库~

返利活动详情

▂▂▂▂▂▂▂▂▂▂▂▂
👉 返回首页: 面试鸭返利网

如果你想获取更多关于面试鸭的优惠信息,可以访问面试鸭返利网面试鸭优惠网,了解最新的优惠活动和返利政策。

🎯 立即加入面试鸭会员 →

支付宝扫码领取1-8元无门槛红包

支付宝红包二维码