news 2026/8/6 13:30:23

缓存穿透、击穿、雪崩,这样回答要满分呀!

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
缓存穿透、击穿、雪崩,这样回答要满分呀!

缓存穿透、缓存击穿、缓存雪崩是经典的老八股文啦,之前去面试一个银行,就被问到啦,本文跟大家聊聊怎么回答哈~~

1.缓存穿透问题

先来看一个常见的缓存使用方式:

读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。

1.1 什么是缓存穿透问题

缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,进而给数据库带来压力。

通俗点说,读请求访问时,缓存和数据库都没有某个值,这样就会导致每次对这个值的查询请求都会穿透到数据库,这就是缓存穿透。

1.2 缓存穿透产生原因

缓存穿透一般都是这几种情况产生的:

  • 业务逻辑设计不合理:比如大多数用户都没开守护,但是你的每个请求都去查询缓存,查询某个userid有没有开守护~

  • 黑客非法请求攻击:比如黑客故意捏造大量非法请求,以读取不存在的业务数据。

  • 数据生命周期管理问题:某些数据被删除后,缓存没有及时更新,导致后续查询穿透。

如何避免缓存穿透呢? 一般有三种方法。

  • 用户请求进行有效性检查:它的核心思想是对请求参数进行合法性校验,提前过滤掉明显无效的请求。(主要包括数据格式校验、数据范围校验、权限校验等等)

  • 缓存空值:如果查询数据库为空,我们可以给缓存设置个空值,或者一个特殊标记的默认值,设置一个较短的过期时间,避免频繁访问数据库。(业务上比较常用,简单有效)

  • 使用布隆过滤器:快速判断数据是否存在。即一个查询请求过来时,先通过布隆过滤器判断值是否存在,存在才继续往下查。如果不存在,就不访问数据库啦~~

布隆过滤器原理:它由初始值为0的位图数组和N个哈希函数组成。一个对一个key进行N个hash算法获取N个值,在比特数组中将这N个值散列后设定为1,然后查的时候如果特定的这几个位置都为1,那么布隆过滤器判断该key存在,否则不存在。

2.缓存雪崩问题

缓存雪崩:在某个时间点,大量缓存数据同时过期, 导致大量请求直接访问数据库,引起数据库压力过大甚至down机。

2.1 缓存雪崩常见原因:

  • 缓存设置了集中的过期时间:大量缓存数据设置了相同或者相似的过期时间,导致它们在同一时间段内集体过期。

  • 缓存预热不充分:系统启动时缓存数据加载不充分,导致大量请求直接访问数据库。

  • 缓存服务器宕机:redis集群中,多个节点同时宕机,导致大量缓存数据不可用

常见一些经典场景:促销活动结束(大量商品缓存同时失效)、或者定时任务触发(比如凌晨批量更新缓存,固定过期时间触发雪崩)

2.2 如何解决缓存雪崩的问题

通过分散过期时间,是解决缓存雪崩最简单有效的解决方案~~

可通过均匀设置过期时间解决,即让过期时间相对离散一点。如采用一个较大固定值+一个较小的随机值,1小时+0到100秒酱紫。

Redis 故障宕机也可能引起缓存雪奔。这就需要构造Redis高可用集群啦。比如redis主从、哨兵模式、集群模式(Redis cluster)。

当然,还有最后的防线,就是限流和降级~~

3. 缓存击穿问题

缓存击穿是指某个热点数据在缓存中过期的同时,大量并发请求访问该数据,导致这些请求直接访问数据库,造成数据库压力骤增。

缓存击穿看着跟缓存雪崩有点像,其实它两区别是:

  • 缓存击穿针对单个热点 Key,缓存雪崩针对大量Key或整个缓存服务

  • 影响结果不一样,缓存击穿导致数据库短期压力剧增;缓存雪崩则可能导致数据库被压垮

3.1 缓存击穿常见原因

  • 高并发场景,比如秒杀活动呀,热点新闻等

  • 管理员手动误清除:运维人员误删或主动清理某个热点Key(如商品价格调整),删除后突发流量访问。

3.2 缓存击穿的解决方案

常见的解决方案:

  1. 使用互斥锁方案。缓存失效时,不是立即去加载db数据,而是先使用某些带成功返回的原子操作命令,如(Redis的setnx)去操作,成功的时候,再去加载db数据库数据和设置缓存。否则就去重试获取缓存。

  2. “永不过期”,是指没有设置过期时间,但是热点数据快要过期时,异步线程去更新和设置过期时间。

  3. 随机过期时间,通过为热点数据设置略有差异的过期时间,避免大量热点数据同时失效~~

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/29 3:18:36

YouTube频道自动化:HeyGem生成系列教学片

YouTube频道自动化:HeyGem生成系列教学片 在内容为王的时代,持续输出高质量视频是YouTube频道生存和增长的生命线。但对大多数创作者来说,现实却很骨感——拍一期视频要写脚本、录音、出镜、剪辑,耗时动辄数小时,更新频…

作者头像 李华
网站建设 2026/7/28 6:29:00

对比主流TTS模型:GLM-TTS在中文场景下的优势与局限

对比主流TTS模型:GLM-TTS在中文场景下的优势与局限 在短视频内容爆发、AI主播日益普及的今天,一段自然流畅、富有情感的语音输出,往往能决定一个产品的用户体验成败。而对中文用户而言,这背后的技术挑战远不止“把文字读出来”这么…

作者头像 李华
网站建设 2026/7/28 14:38:36

2026年哪个降AI率工具效果好?AI率从39%到0%,只用比话降ai!

2026年,各高校明确要求毕业论文必须通过AIGC检测,AI率高于30%甚至20%将无法参加答辩。知网作为国内主流AIGC查重系统,使用知网查论文AI率的学校和师生特别多。 2025年12月28日知网完成AIGC检测算法升级,知网个人AIGC检测服务系统…

作者头像 李华
网站建设 2026/7/28 1:38:33

2025年学术写作AI模型横向对比:六大服务商优缺点及最新更新汇总

2025AI写论文模型排名:6大平台最新对比推荐 核心工具对比速览 工具名称 主要功能 处理时间 适配检测系统 特色优势 aibiye 降AIGC率查重 20分钟 知网/格子达/维普 精准调整表达风格,保留学术严谨性 aicheck AI检测降重 15分钟 主流检测平台…

作者头像 李华
网站建设 2026/8/6 3:43:12

2025年高效论文写作AI工具推荐:六款顶尖模型性能实测与体验报告

2025AI写论文模型排名:6大平台最新对比推荐 核心工具对比速览 工具名称 主要功能 处理时间 适配检测系统 特色优势 aibiye 降AIGC率查重 20分钟 知网/格子达/维普 精准调整表达风格,保留学术严谨性 aicheck AI检测降重 15分钟 主流检测平台…

作者头像 李华