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

redis缓存穿透、击穿、雪崩的区别

一句话总结

缓存穿透是查询不存在的数据绕过缓存击穿数据库;缓存击穿是热点数据过期导致瞬间高并发请求压垮数据库;缓存雪崩是大量缓存同时失效引发数据库连锁崩溃。区别在于穿透因数据不存在,击穿因单点热点失效,雪崩因大规模缓存失效。
详细解析

一. 定义和原因

1. 缓存穿透(Cache Penetration)
定义:大量请求查询不存在的数据,导致请求直接穿透缓存,直达数据库。
原因:
恶意攻击:如使用随机不存在的ID发起请求。
业务缺陷:未正确处理无效查询(如未缓存空结果)。
示例:
请求用户ID为-1的数据(数据库中不存在)。
解决方案:
布隆过滤器:预存所有合法键,拦截无效请求。
缓存空值:对不存在的数据缓存null,设置较短过期时间(如5分钟)。
接口限流:对高频无效请求的客户端进行限流或黑名单处理。
2. 缓存击穿(Cache Breakdown)
定义:热点数据在缓存过期瞬间,大量并发请求直接冲击数据库。
原因:
热点数据缓存过期,且并发请求量极大。
未使用互斥锁或异步更新机制。
示例:
双十一秒杀商品信息缓存过期,瞬间数万请求涌入数据库。
解决方案:
互斥锁(Mutex Lock):仅允许一个线程重建缓存,其他线程等待。
逻辑过期:缓存永不过期,后台异步更新数据。
热点数据预加载:提前续期缓存,避免同时失效。
3. 缓存雪崩(Cache Avalanche)
定义:大量缓存数据同时过期或缓存服务宕机,导致所有请求涌向数据库。
原因:
缓存数据设置相同的过期时间(如凌晨批量更新后统一失效)。
缓存集群故障(如Redis主从全挂)。
示例:
促销活动结束后,所有商品缓存设置为1小时后过期,导致瞬时数据库压力激增。
解决方案:
随机过期时间:在基础过期时间上增加随机值(如基础时间 + 0~300秒)。
多级缓存:本地缓存(Caffeine)结合分布式缓存(Redis),分级失效。
服务熔断降级:数据库压力过大时,触发熔断机制返回默认值。
高可用架构:Redis集群(主从+哨兵)或云托管服务(如AWS ElastiCache)。

二. 对比总结

三. 实战建议

防御组合:
布隆过滤器 + 空值缓存 + 互斥锁 + 随机过期时间。
监控告警:
实时监控缓存命中率、数据库QPS,异常时触发告警。
压力测试:
模拟高并发场景,验证缓存策略的有效性。

http://www.jsqmd.com/news/489617/

相关文章:

  • 哪些产品需要沙特SABER认证?一文说清
  • 实测 Claude 1M 长文本与 API 价格策略:开发者如何避坑与降本增效
  • 智慧交通项目:Python+PySide6 车辆检测系统 YOLOv8+OpenCV 自定义视频 自定义检测区域 (源码+文档)?
  • 从需求到落地:手把手教你编写第一个OpenClaw自定义技能
  • NJR-10线材扭转卷绕试验机
  • 二维巷道开挖模型文件
  • 飞扬集成设计系统 × 启道协同设计系统:二三维一体协同,重塑设计交付新范式
  • claude code安装过程中的问题记录
  • React单位转换系统:设计灵活的单位系统与单位系统转换方案
  • 如何验证序列号是否被Apple占用
  • OUC《信号与系统》期末复习
  • Java定时器Timer源码深度解析
  • 作为 PHP 开发者,我第一次用 Go 写了个桌面应用
  • C#常用类库-详解Polly
  • 基于Spring Boot 3的学校药店信息管理系统
  • GitHub秘钥:安全存储与高效调用
  • iPhone 用户如何通过鼠标提升操作体验?
  • PTA 6-10 二分查找
  • USB HOST和USB OTG的核心区别
  • 深度解析:揭秘ChatGPT外部GPTs应用的核心——如何获取提示词与知识库文件
  • 华为openEuler部署Dillinger全攻略
  • SVD揭秘:线性代数的几何魔法
  • 操作系统应用开发(十四)RustDesk服务器配置——东方仙盟筑基期
  • 【架构心法】砸碎中间件的枷锁!手撕 micro-ROS 底层,让单片机以“一等公民”身份原生打通 ROS 2 分布式网络
  • MongoDB GEO 项目场景 ms-scope 实战
  • KVM Web管理界面安装指南(Cockpit 方案)
  • 注意!自引超标,中科院1区Top跌至2区!
  • 【系统心法】别拿吞吐量当实时性!撕开 Linux 调度的虚伪面具,用 RT-Preempt 与 C++ 构筑微秒级绝对确定的上位机引擎
  • 2026 年上海账务处理优质机构,高效省心有保障
  • Qwen3-Coder 实战:从 0 到 1 开发商业级 API 平台,过程开源!