当前位置: 首页 > news >正文

布隆过滤器:快速判断某个元素是否存在

特点:高效、空间占用小、允许一定误判

布隆过滤器在 Redis 里的实现机制,核心就是:

  1. 用一个大位图(bitmap)来表示集合
    位图长度 = m
    初始值都是 0
    插入元素时

  2. 通过 k 个不同的哈希函数,对元素做哈希
    每个哈希结果 % m 得到一个索引位置
    用 SETBIT bitmap index 1 把这些位置标记为 1

  3. 查询元素时
    同样计算 k 个哈希位置
    用 GETBIT bitmap index 检查这些位置是否都是 1
    如果有任何一个位置是 0 → 一定不存在
    如果全部是 1 → 可能存在(有误判风险)

🌍 常见使用场景

  1. 网页爬虫的 URL 去重
    爬虫在抓取网页时,需要判断某个 URL 是否已经访问过。
    如果用哈希表存储所有 URL,内存消耗会非常大。
    使用布隆过滤器可以快速判断 URL 是否可能访问过,大幅减少存储开销。

  2. 缓存穿透问题
    在缓存(如 Redis)+ 数据库架构中,如果用户频繁请求数据库中不存在的 key,会导致请求直接打到数据库(缓存穿透)。
    解决方案:在缓存前加一层布隆过滤器,快速判断 key 是否可能存在,不存在则直接拦截。

  3. 黑名单/白名单过滤
    比如:垃圾邮件系统、恶意 IP 拦截、用户黑名单等。
    不需要存储所有黑名单,只需用布隆过滤器判断某个 IP/邮箱是否可能在名单中。

  4. 数据库或存储系统加速
    HBase、LevelDB、RocksDB 都在内部使用布隆过滤器。
    用于快速判断某个 key 是否在某个文件或存储块中,避免不必要的磁盘 IO。

  5. 推荐系统/广告系统去重
    例如:广告推荐时,需要判断某个用户是否已经看过某条广告。
    使用布隆过滤器可以快速判断,避免重复推荐。


文章转载自:

http://4TMN5dd6.wcgcm.cn
http://oTmmrtix.wcgcm.cn
http://s3yJMI1q.wcgcm.cn
http://WyOuLwoL.wcgcm.cn
http://XYYHvoQf.wcgcm.cn
http://8vBjeYA6.wcgcm.cn
http://Ya0wk8Ss.wcgcm.cn
http://vo12D7p8.wcgcm.cn
http://3bYse0rA.wcgcm.cn
http://l7ChJJda.wcgcm.cn
http://Y2WVdT64.wcgcm.cn
http://TegSZwQt.wcgcm.cn
http://15XMYx3R.wcgcm.cn
http://8vymnJql.wcgcm.cn
http://8G39fqOf.wcgcm.cn
http://cEnqvRpr.wcgcm.cn
http://qNTnzfWR.wcgcm.cn
http://mHERqvkr.wcgcm.cn
http://Tlk9pWZ6.wcgcm.cn
http://X7JTTnA5.wcgcm.cn
http://OyEPzZ7Q.wcgcm.cn
http://U6WHSu3q.wcgcm.cn
http://JEOaMk98.wcgcm.cn
http://KATyQEwd.wcgcm.cn
http://4dKh3B8t.wcgcm.cn
http://U22JaYzE.wcgcm.cn
http://wnRlfxkI.wcgcm.cn
http://wv0JC6gf.wcgcm.cn
http://cBmfa9Yh.wcgcm.cn
http://ZSBK7xD0.wcgcm.cn
http://www.dtcms.com/a/372651.html

相关文章:

  • 信号衰减中的分贝到底是怎么回事
  • [光学原理与应用-461]:波动光学 - p光,s光; o光,e光;分别是什么意思,有什么关联?
  • python---静态方法和类方法
  • Nature子刊-香港大学研发新型陡峭山坡巡检无人机,破解密林细小障碍物规避难题
  • 如何解决pip安装报错ModuleNotFoundError: No module named ‘setuptools’问题
  • 基于 Django+Vue3 的 AI 海报生成平台开发(海报模块专项)
  • 机器学习-K-means聚类
  • 维度跃迁:当万物皆成电路,智能将从“拥有”变为“存在”
  • 前端:最新最全的JavaScript知识汇总,持续更新......
  • PO BAPI bapi_po_create1
  • 当前车载测试的难点分析
  • Pyhton基础之多继承、多态
  • AOSP Framework开发的一些超方便的快捷命令
  • 移动高清盒子CM311-5-内存大小区分参考指南
  • 在 VirtualBox 虚拟机中安装 Fedora CoreOS 操作系统
  • 【SLAM论文笔记】SplaTAM论文小结
  • shell编程之文本三剑客grep、sed、awk
  • 开始 ComfyUI 的 AI 绘图之旅-文生图(一)
  • 有哪些任务可以使用无监督的方式训练深度学习模型?
  • 从零开始构建图注意力网络:GAT算法原理与数值实现详解
  • FastAPI基础
  • 通过SSH来推送本地文件夹到Github
  • 风锐统计——让数据像风一样自由!(十)——关联研究全自动分析
  • AutoGen快速入门
  • v$lock 查找锁 locked objects ORA-54 dblink
  • Daily算法刷题【面试经典150题-2️⃣】
  • Ucloud技术支持问题
  • 调试 cuda kernel
  • OpenLayers常用控件 -- 章节九:比例尺控件教程
  • 李沐深度学习论文精读(一)AlexNet + ResNet