Redis缓存雪崩解决方案

  1、什么是缓存雪崩?你有什么解决方案来防止缓存雪崩?
 
            如果缓存集中在一段时间内失效,发生大量的缓存穿透,所有的查询都落在数据库上,造成了缓存雪崩。
            由于原有缓存失效,新缓存未到期间所有原本应该访问缓存的请求都去查询数据库了,而对数据库CPU 和内存造成巨大压力,严重的会造成数据库宕机
 

  2. 防止缓存雪崩解决方案

   

 1、加锁排队   key: whiltList  value:1000w个uid 指定setNx whiltList value nullValue
                mutex互斥锁解决,Redis的SETNX去set一个mutex key,
                当操作返回成功时,再进行load db的操作并回设缓存;
                否则,就重试整个get缓存的方法


            2、数据预热
                缓存预热就是系统上线后,将相关的缓存数据直接加载到缓存系统。这样就可以避免在用户请求的时候,
                先查询数据库,然后再将数据缓存的问题!用户直接查询事先被预热的缓存数据!
                可以通过缓存reload机制,预先去更新缓存,再即将发生大并发访问前手动触发加载缓存不同的key     


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


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


            5、设置不同的过期时间,让缓存失效的时间点尽量均匀
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值