Redis---你告诉我什么特么的叫惊喜?哦不,什么特么的叫缓存穿透?

本文探讨了缓存穿透问题,当大量请求同时未在Redis中找到数据并直接查询数据库,可能导致数据库压力过大甚至崩溃。提出两种解决方法:1)简单的synchronized锁机制,但效率低;2)双层检测同步锁,减少数据库访问。欢迎讨论更优方案。
摘要由CSDN通过智能技术生成

假设:现在有一万个人同时请求,刚开始的时候,Redis中没有我们想要的数据,Redis是在内存中操作的,承载压力大约10万,没什么问题。当get不到的时候,代码继续向下走。

在这里插入图片描述
代码走到查询数据库,一万人同时请求数据库,会瞬间造成数据库服务器压力增大。请求更多的话,有可能造成数据库卡死或崩掉。这就是缓存穿透问题,简单来说就是请求击穿了缓存直接请求数据库,造成数据库压力。

在这里插入图片描述
解决思路:当一个人请求过来时,从数据库查出放到Redis中,剩下的人直接去取缓存就OK。

解决方法:

1.最简单的一种方法。用synchronize锁机制
在这里插入图片描述
缺点:一万个人过来,都要排队进行查询。效率很低!!!

2.改进一下,使用双层检测同步锁,只需要进入一次数据库获取数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值