缓存穿透、缓存雪崩、缓存击穿、布隆算法

一、缓存穿透

  去缓存层没有查到数据,而去数据库中查找数据。

  注意:不能避免低频的缓存穿透,可以避免高频的缓存穿透。

  

 二、缓存雪崩

   缓存层的数据,在某一时刻突然失效(无法访问),导致大量的请求跑到数据库。

  导致原因:

  (1)redis中缓存的数据有效期是一致的。

  解决办法:给每一条数据加上一个随机有效期,不要突然同时失效。

  (2)redis数据库挂掉了

  解决办法:分布式缓存

三、Redis集群的Hash一致性算法

  解决redie集群中再添加redis数据库的数据存储问题。

  

 

 

三、缓存击穿

  当缓存层(redis)只缓存了1条数据时,当用户大量的请求过来时,刚好这条数据失效。

    

 

   解决办法:分布式锁(基于mysql或者基于Zookeeper)

  

 

 

四、布隆算法

  通过一定的错误率换取空间,错误率是由于存在hash碰撞导致的,降低错误率的方法:1.加大数组的长度,2.增加hash函数的个数(并不是hash函数越多越好,要参考数组的长度)。

  hash错误率:(1)布隆算法返回数据存在,则有可以数据实际不存在。(2)布隆算法返回数据不存在,则数据一定不存在。

  

 

posted @ 2021-01-23 08:41  zwj鹿港小镇  阅读(90)  评论(0编辑  收藏  举报