缓存穿透,缓存雪崩,缓存击穿
创始人
2025-05-30 10:59:30
0

注:该文章基于黑马程序员中《黑马点评》软件的学习

视频链接
涉及视频

p40
p42
p43

缓存穿透

是指客户端请求的数据在缓存和数据库中都不存在,这样缓存永远不会生效,这些请求全部被打到数据库。

产生的原因:
1.请求的id缓存不存在
2.用户恶意请求系统不可能配置的id

常见的俩种解决方案:

1.缓存空对象
将从数据库中没有查询到的结果返回一个空给缓存,并且给缓存设置一个有效时长

优点: 实现简单,维护方便
缺点: 1.额外的内存消耗
            2.可能照成短期的不一致(当返回null时,数据库添加了id的信息,存在一个小于等于TTL时长的缓存和内存数据不一致的情况)

在这里插入图片描述
2.布隆过滤器
布隆过滤器通过hash算法将数据库的数据计算出hash值,将hash值转换成二进制数保存在布隆过滤器里,因为是二进制数,所以布隆过滤器不会产生很大的缓存消耗

优点: 内存占用较少,没有多余的key
缺点: 1.实现复杂(目前redis中可以直接调用)
            2.存在误判的可能(布隆过滤器判定不存在,数据库中肯定不存在,布隆过滤器判断存在,可能数据库中不存在)
在这里插入图片描述

其他方法:
1.增强id的复杂度,避免被猜测id规律
2.做好数据的基础格式校验

缓存雪崩

同一时间段大量的缓存key同时失效或者redis服务宕机,导致大量的请求到达数据库,带来数据库巨大的压力
在这里插入图片描述

解决方案:
1.给不同的key配置随机的TTL值,让他们不会出现同时失效的情况
2.利用redis集群提高服务的高可用性
3.给缓存业务添加降级限流策略
4.给业务添加多级缓存

缓存击穿(热点问题)

一个高并发访问并且缓存重建业务比较复杂的Key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击
在这里插入图片描述

常见的俩种解决方案:

1.互斥锁
单第一个线程缓存未命中的时候,对缓存上互斥锁,然后开始查询数据库,与此同时来查询缓存的其他线程,发型缓存未命中,也要开始开启互斥锁,但是被第一个互斥锁挡住,无法开启,于是其他线程循环查询查询缓存和尝试开始互斥锁直到第一个线程在数据库中查询到数据并且写入缓存,其他缓存才可以命中缓存(目的在于只有一个线程查询数据库,其他线程等待)
在这里插入图片描述
逻辑过期
我们在存储这个信息到缓存时不设置TTL,设置一个值(当前的时间+持续的时间)来了解他的逻辑过期时间。
当我们出现第一个线程查询缓存发现逻辑时间已经过期的时候,开启互斥锁
第一个线程开启另一个线程来完成查询数据库和写入缓存等工作,最后释放互斥锁
与此同时第一个线程返回过期的缓存数据。
其他刚来的线程发现逻辑时间过期,获取互斥锁失败,也返回过期的缓存数据
直到第一个缓存开启的另一个缓存释放锁后到来的线程可以查询到最新的缓存数据
在这里插入图片描述

互斥锁偏向数据的一致性,但是性能会有所下降
逻辑过期偏向于可用性,但是可能存在数据的不一致

在这里插入图片描述

相关内容

热门资讯

全网最详细,Jmeter性能测... 目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目...
刑释解教人员安置帮教工作计划 刑释解教人员安置帮教工作计划  为切实做好刑满解教人员的安置帮教工作,预防和减少重新犯罪,降低恶性案...
语文教学工作计划 有关语文教学工作计划四篇  时间真是转瞬即逝,我们的工作又将在忙碌中充实着,在喜悦中收获着,让我们对...
办公室工作计划 关于办公室工作计划范文合集十篇  时间真是转瞬即逝,成绩已属于过去,新一轮的工作即将来临,来为以后的...
记一次Excel模板导出功能 前言 这篇文章是要记载在开发过程中实现:使用自己定义的excel模板文件,将list数据填入模板文件...
学校教师德育工作计划 学校教师德育工作计划  时间过得太快,让人猝不及防,我们的工作又将迎来新的进步,是时候开始写工作计划...
秋季幼儿园保育工作计划 秋季幼儿园保育工作计划(精选3篇)  时间真是转瞬即逝,我们的工作又迈入新的阶段,让我们一起来学习写...
八年级英语教学工作计划 八年级英语教学工作计划合集15篇  光阴迅速,一眨眼就过去了,很快就要开展新的工作了,现在的你想必不...
学校工作计划 【精品】学校工作计划合集8篇  光阴如水,我们又将迎来新一轮的努力,不妨坐下来好好写写工作计划吧。相...
样式声明——文本属性 系列文章目录 前端系列文章——传送门 CSS系列文章——传送门 文章目录系列文章目录1.文本的颜色...
springcloud3 Se... 一 分布式事务 1.1 分布式事务 一次业务操作需要跨多个数据源或者需要跨多个系统进行远程调用&#x...
Hadoop--万恶NameN... 每次用到Hadoop集群时NameNode总有各种各样奇奇怪怪的问题启动不了或者hdfs用9870端...
小学安全工作计划 【精选】小学安全工作计划汇编8篇  日子如同白驹过隙,我们又将迎来新一轮的努力,为此需要好好地写一份...
小学综合实践工作计划 小学综合实践工作计划(精选20篇)  光阴迅速,一眨眼就过去了,我们又有了新的工作,是时候认真思考工...
机器人误差动力学与PID控制 #机器人 #控制 #误差动力学 #设定点控制 #计算力矩控制器 #PID控制 详细可参考书本:《现代...
3.19百度移动端 一连三... 记录一下第一次面试过程,积德求offer😭 预约的3.19上午九点的面...
如何学习深度学习 深度学习是机器学习领域中的一个分支,它通过多层神经网络来建模和解决各种问题。深度学习已...
秋季学期幼儿园教师的工作计划 2021年秋季学期幼儿园教师的工作计划(精选5篇)  时间过得真快,总在不经意间流逝,我们的工作又迈...
小学班级工作计划 小学班级工作计划(通用17篇)  时间过得飞快,我们的工作又进入新的阶段,为了今后更好的工作发展,此...
0-1背包问题dp[][]/d... 先推荐个视频b站算法训练营一、类型1,重量限制题目:给定N个物品,每个物...