首页 >文档 > redis缓存穿透解决方案

redis缓存穿透解决方案

Redis缓存穿透是面试必问的高频问题,指恶意请求不存在的数据导致数据库压力骤增。本文详解三大解决方案:空对象缓存通过存储特殊标记拦截无效请求;布隆过滤器利用哈希算法预先过滤非法Key;限流熔断机制保护系统免受过载冲击。针对不同场景提供技术选型建议,包括适用条件与优缺点对比。同时解答面试常见追问,如布隆过滤器误判原理、空对象缓存清理策略等。附赠2025年Java面试宝典下载链接,帮助开发者全面掌握Redis缓存穿透防御技巧,提升系统高可用性。

Redis缓存穿透解决方案:面试必问的高频问题详解

Redis缓存穿透解决方案

2025年Java面试宝典完整版已整理:
🔵 链接: https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg?pwd=9b3g 提取码: 9b3g


一、什么是Redis缓存穿透?

当面试官问“Redis缓存穿透”时,实际在考察你对缓存机制底层风险的理解。缓存穿透是指恶意请求根本不存在的数据,导致请求直接穿透Redis缓存层,压垮数据库。举个真实案例:

  1. 黑客高频请求 user_id=-1 这种非法ID
  2. Redis查无此数据(未缓存)
  3. 所有请求直击MySQL
  4. 数据库连接池被打满,服务宕机

缓存穿透示意图


二、三招破解缓存穿透

✅ 方案1:空对象缓存(最常用)

面试话术

“我们会对数据库查询结果为空的Key,在Redis中缓存一个特殊空对象(比如NULL_OBJECT),并设置较短过期时间(5-10分钟)。这样后续相同请求会命中Redis,避免穿透”

技术关键点

  1. 缓存键规范:cache:user:-1 -> "NULL"
  2. 过期时间动态调整:高频攻击Key设置更短TTL
  3. 异步更新机制:避免缓存雪崩

✅ 方案2:布隆过滤器(大数据量场景)

面试话术

“在Redis前加布隆过滤器,把所有合法Key提前初始化。请求先过布隆过滤器:

  • 若返回不存在,直接拦截请求
  • 若返回可能存在,才查询Redis/DB”

落地注意点

  1. 误判率设置:通常0.01%需约14个哈希函数
  2. 数据更新同步:DB新增数据时需更新布隆过滤器
  3. 内存优化:1亿数据约114MB内存

✅ 方案3:请求限流与熔断

面试话术

“针对频繁请求不存在的Key,用Redis实现滑动窗口限流:

  • 对每个Key记录1分钟内的请求次数
  • 超过阈值则触发熔断(如返回默认值)
  • 结合网关层实现全局防护”

核心代码逻辑

local key = "ratelimit:"..KEYS[1]
local limit = tonumber(ARGV[1])
local current = redis.call('GET', key) or 0
if current + 1 > limit then
    return 0  -- 触发熔断
else
    redis.call('INCR', key)
    redis.call('EXPIRE', key, 60)
    return 1
end

三、技术选型建议

| 方案 | 适用场景 | 优缺点对比 | |---------------------|--------------------------|---------------------------| | 空对象缓存 | 数据量小,Key有限 | ✅ 实现简单 ⚠️ 内存占用增加 | | 布隆过滤器 | 海量数据,精确防御 | ✅ 内存高效 ⚠️ 存在误判率 | | 限流熔断 | 突发流量场景 | ✅ 系统级防护 ⚠️ 影响正常请求|


🚀 冲刺面试小贴士
最近很多同学通过 面试鸭返利网 购买面试鸭会员,可额外返利25元(官方原价基础上立减)。需要时可去官网比价~

面试鸭返利网优惠


四、高频面试追问答案

  1. 问:布隆过滤器为什么有误判?

    答:因采用多哈希位图存储,不同Key的哈希组合可能重叠,导致误判为存在(实际不存在)

  2. 问:空对象缓存导致大量垃圾数据怎么办?

    答:采用两层过期策略:

    • 一级过期:5分钟后自动删除
    • 二级清理:夜间定时扫描清理NULL对象
  3. 问:如何区分恶意请求和正常请求?

    答:通过行为模式分析:

    • 相同IP短时请求不同不存在Key
    • 请求参数明显不符合业务规则
    • 携带异常Header或Token

更多面试真题解析
点击访问 👉 面试鸭返利网 获取《Redis高频面试50题》完整题库,涵盖穿透/击穿/雪崩全场景解法!

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

🎯 立即加入面试鸭会员 →

今日有支付宝大红包赶快领,手慢无

支付宝红包二维码

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

支付宝红包二维码