缓存雪崩的五大解决方案

1,定义

如果缓存集中在一段时间内失效,引发大量缓存穿透,所有的查询都落在数据库上,造成缓存雪崩,由于原有缓存失效,新缓存未到期间所有原本访问缓存的都去访问了数据库,而对数据库cpu和内存造成巨大压力,从而引发宕机。

缓存雪崩的五大解决方案_第1张图片

 

2,如何预防和解决

2.1 加锁排队

mutex互斥锁解决,Redis的setnx去set一个mutex key,当操作返回成功时,再进行load db并回设到缓存,否则就重试整个get缓存的方法。

2.2 数据预热

数据预热就是系统上线后,将相关的缓存数据直接加载到缓存系统,这样就可以避免在用户请求的时候先查询数据库。

2.3 双层缓存策略

C1为原始缓存,C2为拷贝缓存,C1失效时可以访问C2,C1缓存失效时间设置为短期,C2缓存失效时间设置为长期。

2.4 定时更新缓存策略

失效性要求不高的缓存,容器启动初始化加载,采用定时任务更新或移除缓存。

2.5 缓存失效时间分布均匀

设置不同的过期时间,让缓存失效的时间尽量分布均匀。

你可能感兴趣的:(Redis)