使用缓存需要考虑的问题

缓存穿透:使用在缓存中不存在的key进行大量的高并发查询。预防措施:①对服务设计限流和熔断降级②可以针对不存在的key在缓存中缓存起来,再次收到相同的请求,会直接查询到空值然后进行返回。
缓存并发:某一个缓存key失效时,在高并发下,多个请求同时访问数据库来查询最新数据,并且会写缓存。预防措施:①同步数据库最新数据的操作加上分布式锁②本地锁(不推荐,但是简单)③软过期,不使用缓存自带的过期设置,在缓存的value中设置过期时间,查询数据时,如果发现时间即将过期,则将失效时间延长,程序另起一个线程去数据库查询最新数据,然后更新缓存。其他线程这时看到延长了的过期时间,就会继续使用旧数据,等派遣的线程获取最新数据后再更新缓存。(当然也需要注意另起的那个线程更新缓存失败情况下的补偿)
缓存雪崩:大量key失效在某一段时间内失效,给后端服务器造成瞬时的负载升高的压力。预防措施:对不同的缓存设置不同的失效时间,预防大批量的缓存在较短时间段内同时过期。比如对同一类型的缓存,设置一个基准的失效时间,然后在这个基准线上上下浮动。

转载于:https://www.cnblogs.com/TryTired/p/11135278.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值