redis 如何造成缓存雪崩
文章目录
什么是redis雪崩
redis 缓存在同一时间失效,导致请求直接从物理数据库中读取数据,而针对一些热门并发数据,
如果在同一时间缓存全部失效,导致并发过来,物理数据库承担不住大并发请求而导致系统崩溃,就是redis雪崩.
什么情景下会出现这种情况
比如微博热搜,app首页数据已经电商秒杀活动商品等等.....
而这些数据一般情况下是定时任务来创建redis缓存;
比如定时任务执行一次,把热门数据缓存起来,并且设置统一生效时间2小时;
而2小时后,正好面临一场秒杀活动;
我们试想一下,
2小时后的缓存全部失效,这时突然一个高并发请求进来,本来redis能抵抗80%并发请求,结果因为全部失效导致所有并发压力转移到物理数据库,
这时致命的,可能系统一瞬间瘫痪......
如何避免redis雪崩
上面我们已经介绍了redis雪崩会导致并发直接打DB,轻者请求延迟卡顿,重者直接打废系统,那么我们该如何来避免雪崩呢?
一般的做法是对缓存数据的缓存有效时间做控制;
我们尽量避免让缓存数据同一时间失效;
如果定时任务来创建缓存,如果可以不在同一时间失效呢?
我们设置统一的缓存时间后,再加上一个随机缓存时间;
setRedis(Key,value,time + Math.random() * 10000);