缓存雪崩、穿透、击穿的概念和如何避免

雪崩

概念

高并发请求多个key,此时多个key同时失效、不在缓存中,请求全部打到数据库,使数据库无法处理这么多的连接,导致数据库死机

如何避免

  • 防止多个key同时过期,设置随机的过期时间
  • 不设置过期时间,有更新时更新维护到最新

穿透

概念

请求数据在缓存和数据库中都不存在,大量请求打到缓存和数据库,造成缓存和数据库处理大量请求导致服务器死机

如何避免

  • 不查库的参数校验,过滤掉非法数据
  • 不存在的数据,在缓存中存放默认值表示数据不存在,通过缓存来减少数据库请求量
  • 使用布隆过滤器来判断一个记录是否存在

击穿

概念

高并发请求一个key,此时该key过期、不存在缓存中,大量并发请求打到数据库,造成数据库死机

如何避免

  • 缓存不过期
  • 互斥锁

区别

  • 雪崩是多个key同时过期,而打到数据库;
  • 穿透是key既打到缓存又打到数据库;
  • 击穿是大并发请求单个key,造成缓存和数据库都处理大量请求

思维导图

相关推荐
YJlio7 分钟前
OpenClaw v2026.5.26-beta.1 / beta.2 预发布解读:Gateway 加速、transcript 路径统一、多通道修复、语音增强与安装更新链路加固
人工智能·windows·python·ui·缓存·gateway·outlook
是烨笙啊11 小时前
在 Claude code 中如何利用模型缓存节省 token
人工智能·缓存·ai编程
闪电悠米12 小时前
黑马点评-Redisson-01_why_redisson
java·服务器·网络·数据库·缓存·wpf
dllxhcjla12 小时前
Redis
数据库·redis·缓存
许彰午13 小时前
JWT的四种设计策略——轻量负载缓存外置上下文线程统一验证
java·安全·缓存·tomcat
闪电悠米18 小时前
黑马点评-Redisson-02_reentrant_lock
java·spring boot·redis·分布式·缓存
SilentSamsara19 小时前
缓存策略实战:Redis + Python 多级缓存设计与失效策略
开发语言·redis·python·缓存·性能优化
cheems952720 小时前
[Redis] redis常见命令和String字符串解析
数据库·redis·缓存
Jul1en_20 小时前
【Redis】一文讲透缓存更新策略与缓存预热、穿透、雪崩、击穿
数据库·redis·缓存
1892280486120 小时前
NV041固态MT29F16T08GSLCEM9-QBES:C
人工智能·算法·microsoft·缓存·性能优化