缓存穿透和缓存击穿有什么区别?

缓存穿透和缓存击穿是使用缓存系统必须考虑问题中的两个。这里不具体讨论解决方案,主要是想把缓存穿透和缓存击穿说清楚些,避免面试时候出现混淆。

什么情况算是缓存穿透?

个人理解,使用缓存就是为了减小数据库压力,让大部分的读请求都能落到缓存系统上。而只要请求穿过了缓存层,直接打到了数据库,我就把这个现象理解为缓存穿透。

什么情况会引起缓存穿透?

只要缓存失效了,就会出现缓存穿透,然后根据失效缓存数量的多少,划分出缓存击穿和缓存雪崩,比如热点key失效,高并发请求打到数据库,就是缓存击穿现象。比如大量key同时过期,相关的请求全部都被转发到数据库上,就是所谓的缓存雪崩了。还有就是如果一直请求的都是数据库不存在的数据,比如id为-1的商品数据,也会出现缓存击穿,这就算是恶意攻击了。

那缓存击穿又是什么?

热点key失效,高并发请求打到数据库,就是缓存击穿,缓存击穿可以理解成是缓存穿透的一种特殊情况,因为最后的结果也是请求直接打到数据库(为了解决缓存击穿导致的高并发请求冲垮数据库,一般都会加锁,让其他请求排队,等待第一个请求带回数据存入缓存,然后其他请求就直接去缓存里拿,保证数据库的安全可用,不过有时候想想。都是热点key了,说明爆款了,一家公司能有几个爆款,所以建议自信点,直接设置缓存永不过期,然后再想个保证数据库和缓存数据一致性的解决方案)。

总结

个人理解,缓存穿透和缓存击穿是包含关系,缓存击穿是缓存穿透的一种特殊场景。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值