缓存穿透,缓存击穿,缓存雪崩解决方案分析

缓存穿透

介绍

缓存穿透是指查询一个必定不存在的数据,因为缓存是不命中时被动写,而且处于容错考虑,若是从存储层查不到数据则不写入缓存,这将致使这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。后端

在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击咱们的应用,这就是漏洞。缓存

解决方案

  • 经过布隆过滤器拦截。
  • 对空结果进行缓存,可是过时时间很短,不超过5分钟。

缓存雪崩

介绍

缓存雪崩是指设置缓存采用了相同的过时时间,致使缓存在某一时刻同时失效,请求所有转发到DB,DB瞬间压力太重雪崩。并发

解决方案

  • 采用同步或者队列的方式保证缓存的单线程写,从而避免失效时大量的并发请求落到底层储存系统上。
  • 在缓存的失效时间基础上增长一个随机值,好比1-5分钟。

缓存击穿

介绍

对于一些设置了过时时间的key,若是这些key可能在某些时间点被超高并发地访问,是一种很是“热点”的数据。高并发

缓存在某个点过时的时候,刚好在这个时间点对这个key有大量的并发请求过来,这些请求发现缓存过时通常都会从后端加载数据并回设到缓存,这个时候大并发的请求可能瞬间把后端DB压垮。线程

解决方案

相关文章
相关标签/搜索