高并发下缓存可能会遇到的问题
2018-09-27 本文已影响0人
Mayuri樂
在开发过程中遇到了很多多线程问题,利用缓存记录线程的执行状态,将完成状态以进度条的形式在前端显示。记录学习下高并发下缓存可能会出现的问题,希望以后开发过程中遇到问题能更效率地处理。
一、缓存一致性问题
当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。
这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。
二、缓存并发问题
缓存“雪崩”。缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发场景下,有可能多个请求并发的去从数据库获取数据,对后端数据库造成极大的冲击,导致 “雪崩”现象。
三、缓存穿透问题
在高并发场景下,如果某一个key被高并发访问,没有被命中,出于对容错性考虑,会尝试去从后端数据库中获取,从而导致了大量请求达到数据库,而当该key对应的数据本身就是空的情况下,这就导致数据库中并发的去执行了很多不必要的查询操作,从而导致巨大冲击和压力。
四、缓存无底洞问题
数据库多节点的情况下发生的效率急剧下降的问题
参考文章
https://mp.weixin.qq.com/s/lvdEPGbaGmk8QIIQWDrdyA