Redis缓存策略详解:面试必考技术点剖析
作为程序员,Redis缓存策略是面试中的高频考点。今天我们就以真实面试场景的口述形式,深入解析几大核心策略及其应用场景。
💡 缓存读写策略
1️⃣ Cache-Aside(旁路缓存)
这是最常用的策略。读流程:先查缓存,命中则返回;未命中则查数据库,回填缓存。写流程:直接更新数据库,再删除缓存(注意不是更新缓存!)。
面试坑点:
- 为什么删缓存而不是更新?避免并发写导致脏数据(如线程A更新DB→线程B更新DB→线程B更新缓存→线程A更新缓存,最终缓存是A的旧值)。
- 极端场景下仍可能脏读(查缓存空→查DB旧值→回填缓存前发生写操作删缓存→回填旧值),可通过延迟双删缓解。
2️⃣ Write-Through(穿透写)
写请求同时更新缓存和数据库,由缓存层保证数据一致性。适合写多读少场景,但对缓存可用性要求极高。
关键问题:DB挂了怎么办?需引入写队列异步重试。
3️⃣ Write-Back(回写)
写请求只更新缓存,异步批量刷入数据库。性能极高但可能丢数据(如缓存宕机),适合日志类业务。

🛡️ 缓存异常场景解决方案
🔸 缓存穿透(查不存在的数据)
典型case:频繁请求user_id=-1的数据
解法:
- 布隆过滤器拦截非法Key(注意假阳性问题)
- 缓存空值并设短TTL(如
SET null 5s)
🔸 缓存击穿(热点Key突然失效)
典型case:明星离婚导致微博热搜缓存过期
解法:
- 互斥锁:仅一个线程回源DB,其他等待
- 逻辑过期:缓存Value中存储过期时间,异步刷新
🔸 缓存雪崩(大量Key同时失效)
典型case:零点促销导致缓存集体过期
解法:
- 过期时间加随机因子(如
TTL = base + rand(0,300)) - 集群分片:不同节点缓存不同数据集

⚙️ 内存淘汰策略选择
Redis内存满时的6种策略:
volatile-lru→ 淘汰有过期时间的最近最少用Keyallkeys-lfu→ 全量Key中淘汰最不常用
面试重点:
- LRU vs LFU:前者看最近使用时间,后者看使用频次
- 高频读场景选LFU,突发扫描选LRU
📌 资源福利
2025 Java面试宝典合集:
🔹 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g
🔹 提取码: 9b3g
💰 特别提醒
如果需要购买面试鸭会员,可通过 面试鸭返利网 联系我,额外返利25元!用全网最低价解锁大厂真题库和专项题库~
▂▂▂▂▂▂▂▂▂▂▂▂
👉 返回首页: 面试鸭返利网



