缓存使用-缓存击穿、穿透、雪崩概念

一、缓存穿透

指查询一个不存在的数据、由于缓存不命中,将查询数据库,但是数据库也无此记录,我们没有将null写入缓存,这将导致这个不存在数据每次请求都会查询数据库,导致缓存失去意义。

风险:

利用不存在的数据进行攻击,数据库会瞬间压力增大,最终可能导致崩溃。

解决:

null结果依然缓存,并加入短暂过期时间。

二、缓存雪崩

缓存雪崩是指在我们设置缓存时key采用了相同的过期时间,导致缓存在某一时刻同时失效,请求全部转发到数据库中,数据看瞬时压力过大导致雪崩。

解决:

原有的失效时间基础上增加一个随机值,例如1-5分钟随机,这样每一个缓存的国旗时间的重复率将会降低,就可以很好的规避集体失效。

三、缓存击穿

对于一些设置了过期时间的key。如果这些key可能会在某些时间点被超高并发的访问,是一种非常"热点"的数据。

如果这个key在大量请求同时进来前正好失效,那么所有对这个key的数据查询都会落到数据库中,我们称为缓存击穿。

解决:

加锁,大量并发只让一个去查数据库,其他进行等待,查到以后释放锁、其他人获取到锁先查询缓存,这时缓存就已经存在缓存数据,避免再去数据库查询。

相关推荐
Tim_107 小时前
【算法专题训练】20、LRU 缓存
c++·算法·缓存
Python大数据分析14 小时前
uniapp微信小程序商品列表数据分页+本地缓存+下拉刷新+图片懒加载
缓存·微信小程序·uni-app
童话ing14 小时前
Redis常见问题及其处理策略
数据库·redis·缓存
xrkhy14 小时前
SpringBoot之缓存(最详细)
spring boot·后端·缓存
focksorCr15 小时前
编译缓存工具 sccache 效果对比
c++·缓存·rust
阿里技术15 小时前
一次缓存引发的文件系统数据不一致问题排查与深度解析
缓存·故障排查
Qlittleboy16 小时前
tp5.0如何配置session保存到文件里,方便删除
缓存·php
奔跑吧邓邓子16 小时前
【Java实战㊱】Spring Boot邂逅Redis:缓存加速的奇妙之旅
java·spring boot·redis·缓存·实战
失散1317 小时前
分布式专题——4 大厂生产级Redis高并发分布式锁实战
java·redis·分布式·缓存·架构
失散1319 小时前
分布式专题——6 Redis缓存设计与性能优化
java·redis·分布式·缓存·架构