zoukankan      html  css  js  c++  java
  • 缓存穿透、缓存雪崩、缓存击穿、布隆算法

    一、缓存穿透

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

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

      

     二、缓存雪崩

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

      导致原因:

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

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

      (2)redis数据库挂掉了

      解决办法:分布式缓存

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

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

      

    三、缓存击穿

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

        

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

      

    四、布隆算法

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

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

      

  • 相关阅读:
    gcvt(),ecvt(),fcvt()的区别
    SQLITE3 使用总结
    C++的类型转换浅析
    JAVA Class21
    JAVA Class20
    JAVA Class19
    JAVA Class18
    JAVA Class17
    JAVA Class16
    关于hover失效问题(!important)
  • 原文地址:https://www.cnblogs.com/zwj-199306231519/p/14316481.html
Copyright © 2011-2022 走看看