zoukankan      html  css  js  c++  java
  • redis 布隆过滤器

    参考:

    https://www.cnblogs.com/happydreamzjl/p/11834277.html

     缓存穿透、雪崩等解决方案

    布隆过滤器:数据结构与算法之美第45课

     布隆过滤器在redis中主要用来解决缓存穿透的问题:

    一般情况下,先查询缓存是否有该条数据,缓存中没有时,再查询数据库。当数据库也不存在该条数据时,每次查询都要访问数据库,这就是缓存穿透。缓存穿透带来的问题是,当有大量请求查询数据库不存在的数据时,就会给数据库带来压力,甚至会拖垮数据库。

    可以使用布隆过滤器解决缓存穿透的问题,把已存在数据的key存在布隆过滤器中。当有新的请求时,先到布隆过滤器中查询是否存在,如果不存在该条数据直接返回;如果存在该条数据再查询缓存查询数据库。

    对于每个key,如果只使用一个hash函数,则布隆过滤器中的冲突的概率较大,从而导致误判的概率较大,我们可以使用N个hash函数。对于一个存在的key,分别用这N个hash函数求hash值,然后设置布隆过滤器中对应的bit位。 这样当一个新的请求到来时,我们要判断这个key是否在缓存中,那就先对这个key求N个hash,如果布隆过滤器中对应的N个bit位的值都位1,我们就认为这个key存在于缓存中,这时就可以去接着访问后面的缓存了,这时会有一定的误判概率,但是这个概率比只使用一个hash时小多了。 如果这N个bit有一个不为1,那么这个key就一定不存在缓存中,这时就可以直接返回了。不存在的情况不会产生误判。

  • 相关阅读:
    JAVA程序员常用英语
    计算机常用英语汇总
    从一个前端角度来说页面的优化:雅虎35条(转)
    前端学习(五)
    PS常用快捷键(收藏)
    web前端开发规范文档
    前端学习(四)
    Web前端开发面试题
    linux --批量修改文件内容
    git --添加多个文件
  • 原文地址:https://www.cnblogs.com/wanmeishenghuo/p/13603296.html
Copyright © 2011-2022 走看看