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

redis中缓存穿透,及解决方案

Redis 缓存穿透是指客户端请求查询的数据,在 Redis 缓存和后端数据库中根本都不存在,导致每次请求都会绕过缓存,直接打到数据库上。

如果遭遇高并发请求或恶意攻击,数据库会因为承受不住这种无效查询的压力而崩溃。

🎯 缓存穿透发生的原因

缓存穿透的核心在于“查无此人”。通常由以下几种情况引发:

  1. 恶意攻击:黑客或爬虫故意构造大量数据库中没有的 ID(如负数 ID、随机生成的超长字符串等)发起请求,专门用来绕过缓存攻击数据库。
  2. 业务逻辑缺陷:前端或接口层没有做好参数校验,允许非法的参数(如格式错误的 ID)传入后端服务。
  3. 数据已删除:数据库中的某条数据被删除了,但缓存未同步清理。此时如果大量请求该数据,也会造成短暂的穿透。

💡 核心区别:

  • 缓存穿透:查的是根本不存在的数据(缓存无,数据库也无)。
  • 缓存击穿:查的是存在的热点数据(缓存无,数据库有,但刚好过期)。
  • 缓存雪崩大量数据在同一时间集体过期或 Redis 宕机。

🛠️ 缓存穿透的解决方案

解决缓存穿透的核心思路是:把无效请求拦截在数据库之前。以下是生产环境中常用的三道防线:

1. 接口层参数校验(第一道防线)

在请求刚进入系统时,就对关键参数进行合法性检查。

  • 核心原理:过滤掉明显不合法的请求,连 Redis 和数据库都不用查。
  • 执行方式:例如校验用户 ID 必须是正整数、字符串长度必须在合理范围内等。不符合规则的直接返回 400 错误。
  • 优缺点:成本极低,能拦截大量低级恶意请求;但无法拦截那些“格式合法但实际不存在”的 ID。
2. 缓存空对象(核心兜底方案)

这是最简单且最常用的解决方案。

  • 核心原理:即使数据库查不到数据,也把这个“空结果”缓存到 Redis 中,并设置一个较短的过期时间(如 2~5 分钟)。
  • 执行流程
    1. 请求查询 Redis 未命中。
    2. 查询数据库,发现数据也不存在。
    3. 将该 Key 在 Redis 中缓存为一个特殊空值(如""null@@EMPTY@@)。
    4. 后续相同的请求会直接命中这个空值缓存,不再穿透到数据库。
  • 优缺点:实现极其简单,能有效拦截重复的无效请求;但如果攻击者使用大量不重复的随机 ID 进行攻击,会在 Redis 中产生大量空值缓存,挤占宝贵的内存空间。
3. 布隆过滤器(终极拦截方案)

布隆过滤器是一种空间效率极高的概率型数据结构,通常作为缓存穿透的终极解决方案。

  • 核心原理:在系统启动或数据加载时,将所有可能存在的有效数据 ID(如所有商品 ID、用户 ID)存入布隆过滤器。
  • 执行流程
    1. 请求到来时,先经过布隆过滤器判断。
    2. 如果布隆过滤器判定该 ID不存在,则该数据一定不存在,直接拦截请求。
    3. 如果判定可能存在,才放行去查询 Redis 和数据库。
  • 优缺点:内存占用极小,查询速度极快,能从根本上挡住绝大多数无效请求;但它存在一定的误判率(即把不存在的数据误判为存在),且标准实现不支持删除操作,数据维护相对复杂。
http://www.jsqmd.com/news/706156/

相关文章:

  • 湖南大奥之心:长沙奥迪专修标杆,让每台德系车重焕新生 - 速递信息
  • 2026哈尔滨偏瘫无法行走:哈尔滨偏瘫肢体麻木、哈尔滨偏瘫行动障碍、哈尔滨偏瘫语言障碍、哈尔滨冠心病室上速、哈尔滨冠心病心律不齐选择指南 - 优质品牌商家
  • 中医智能诊疗系统-阶段一
  • DriveBench基准测试:揭示自动驾驶VLM可靠性挑战与评估方法
  • 质量优先:环保移动公厕、移动公厕租赁、连排移动公厕、免水冲移动公厕、单体移动厕所、塑料移动厕所出租、塑料移动厕所租赁选择指南 - 优质品牌商家
  • AI建站工具怎么选:一份中立实用的选型标准与对比指南
  • 2026年地暖技术深度解析:全屋公元家/公元五金/公元优家管/公元优管家/公元公司/公元农业/公元净水/公元品牌/选择指南 - 优质品牌商家
  • 计算机毕业设计:Python金融大数据可视化与LSTM预测系统 Flask框架 深度学习 机器学习 AI 大模型(建议收藏)✅
  • 海能达数字对讲机找哪家 - 速递信息
  • Redis如何通过永不过期策略规避击穿
  • 2026佛山短视频代运营公司实力大比拼 最新佛山代运营榜单TOP4 - 速递信息
  • 一套Unity框架解决所有RPG问题:ORK的系统设计哲学
  • 幼儿识字动画 1000 字 动画
  • 昆明黄金回收怎么不被坑?内行人教你选靠谱实体店 - 速递信息
  • #2026山东大学软件学院项目实训(四)——AI应用生成模块完整实现
  • AI Agent Harness Engineering 盈利模式设计:订阅制、按次付费与定制化服务
  • 零基础极速上手:普通人如何用AI建站工具10分钟搭建个人网站
  • Copilot Next 工作流配置全解析,深度拆解TypeScript项目自动测试生成+PR注释+文档同步链路
  • MCP 2026集成合规红线预警:5类非标组件已列入2026Q2禁用目录,你还在用吗?
  • 2026年想选好用的郑州联想电脑代理?哪家公司靠谱值得一探究竟! - 速递信息
  • 惯性摩擦焊机早期故障检测与排除技术实现【附代码】
  • 2026年祠堂升级!揭秘祠堂石雕定制,这些雕刻内容你知道吗?
  • 2026Q2优质家用预适应训练仪排行:便携预适应训练仪/全自动缺血预适应训练仪/家用超声波治疗仪/缺氧预适应训练仪/选择指南 - 优质品牌商家
  • 汕头海门木松鱼丸总店在哪?唯一正宗地址、电话与购买指南 - 速递信息
  • 2026年家谱软件技术解析:家谱软件那个好、族谱制作软件哪个好、族谱软件哪个好用、望族家史数字化家谱平台、比较好的家谱软件选择指南 - 优质品牌商家
  • 【Backend Flow工程实践 08】LEF / Liberty / Verilog / DEF:Backend Flow 为什么依赖多格式协同?
  • 知识图谱本体论体系:理论基础、构建方法与应用展望
  • 【Backend Flow工程实践 09】Design Import 不是读文件:它是在建立设计数据库的第一层语义
  • 2026氨分解纯化技术解析:制氮机氮气纯化、制氮机维修、制氮机设备改造、变压吸附制氮机、工业制氮机、氨分解发生炉选择指南 - 优质品牌商家
  • 算法训练营第十四天|18.四数之和