zoukankan      html  css  js  c++  java
  • 布隆过滤器(Bloom Filter)

    一、概念

    1. 布隆过滤器是一个数据结构:bit数组+随机映射函数

    2. 作用:高效判断某个元素是否在给定的集合中

    3. 缺点:有一定的错误识别率,随着数据量越大,错误识别率越大;并且不容易删除

    二、原理

    1. 加入元素:

    a. 使用布隆过滤器中的哈希函数,计算元素的哈希值,可能有多个哈希函数,对应多个哈希值

    b. 根据所有哈希值,把bit数组中对应下标的值设置为1;如果设置时发现已经全部为1,表示元素重复

    2. 判断元素:

    a. 计算哈希值

    b. 判断是否所有对应的下标都为1,都为1存在布隆过滤器;有一个不为1表示不存在布隆过滤器中

    3. 错误率:不同的元素,通过哈希函数计算出来的位置相同

    4. 判断元素存在,小概率会误判;判断元素不存在,一定不会误判

    三、使用场景

    1. 判断给定的数据是否存在大数据中

    2. 防止缓存穿透,判断请求的数据是否有效,避免绕过缓存直接访问数据库

    3. 垃圾邮件过滤

    4. 黑名单功能

    5. 爬虫去重url

    四、Redis中的布隆过滤器

    1. 可以根据原理自己实现布隆过滤器

    2. 单机使用Guava的布隆过滤器

    3. 分布式使用Redis中的布隆过滤器

    参考:

    https://mp.weixin.qq.com/s/_qsHjDemXUNObB0h0XHCkQ

  • 相关阅读:
    Centos Another app is currently holding the yum lock
    Centos 重置密码
    Effective c#学习笔记(1)
    浅谈计算机编码
    mongodb java spring data
    VS2013 好用的插件
    xml存储bug
    VS 2008 生成操作中各个选项的差别
    程序权限控制
    给钛度产品的一些建议(Note)
  • 原文地址:https://www.cnblogs.com/june0816/p/12153002.html
Copyright © 2011-2022 走看看