redis 如何造成缓存雪崩


文章目录



什么是redis雪崩

redis 缓存在同一时间失效,导致请求直接从物理数据库中读取数据,而针对一些热门并发数据,
如果在同一时间缓存全部失效,导致并发过来,物理数据库承担不住大并发请求而导致系统崩溃,就是redis雪崩.


什么情景下会出现这种情况

比如微博热搜,app首页数据已经电商秒杀活动商品等等.....
而这些数据一般情况下是定时任务来创建redis缓存;
比如定时任务执行一次,把热门数据缓存起来,并且设置统一生效时间2小时;
而2小时后,正好面临一场秒杀活动;

我们试想一下,
2小时后的缓存全部失效,这时突然一个高并发请求进来,本来redis能抵抗80%并发请求,结果因为全部失效导致所有并发压力转移到物理数据库,
这时致命的,可能系统一瞬间瘫痪......


如何避免redis雪崩

上面我们已经介绍了redis雪崩会导致并发直接打DB,轻者请求延迟卡顿,重者直接打废系统,那么我们该如何来避免雪崩呢?

一般的做法是对缓存数据的缓存有效时间做控制;
我们尽量避免让缓存数据同一时间失效;
如果定时任务来创建缓存,如果可以不在同一时间失效呢?
我们设置统一的缓存时间后,再加上一个随机缓存时间;

setRedis(Key,value,time + Math.random() * 10000);

出自:redis 如何造成缓存雪崩

回到顶部