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

  • 相关阅读:
    JS数组的相关方法
    JS字符串的相关方法
    重回我的园区
    STM32F405串口UART4波特率注意问题
    NXP MCU开始学习中
    锂电池测试
    FPGA与STM32并口通信
    NXP LPC4350绝对强悍,准备入手学习
    SDRAM+FPGA+MCU
    STM32+FPGA通信成功
  • 原文地址:https://www.cnblogs.com/june0816/p/12153002.html
Copyright © 2011-2022 走看看