Bloomfilter 一般用于检测某元素是否在集合中存在,它的目标是解决在大数据量情况的元素判定。它的优点是它提供的数据结构具有非常高的时间查询和空间存储效率,缺点是可能造成误判,就是说,它判定某元素在集合中,但是其实有可能他不在集合里面,当然,反过来说,如果他判定元素不在集合里面,那么元素肯定是不在集合里面的。因此它的应用场景实用于能够容忍小概率事件的误判产生的情况,简而言之,以正确率换空间和时间。

目前的应用场景比较多,整理如下:

  • 黑名单

最典型的一个应用就是黑名单功能,对用户名称或者IP或者Email进行过滤,每次检查时用key进行hash后,如果不在黑名单内的,肯定可以通行,如果在的则不允许通过,误判情况增加一个排除名单来进行排除。

误判情况:将正常用户判定为黑名单用户

  • 爬虫重复URL检测

在爬取网站URL时,要检测这条URL是否已经访问过。

误判情况:没有访问过的误判为访问过

  • 字典纠错

检查单词拼写是否正确

误判情况:错误的单词误判为正确。

  • 磁盘文件检测

将磁盘中或者数据库中数据key存入该结构中,检测要访问的数据是否在磁盘或数据库中,然后再发起访问,避免空查询造成磁盘或数据库压力。

误判情况:不存在该数据却误判为有该数据。

  • CDN(squid)代理缓存技术

先查找本地有无cache,如果没有则到其他兄弟 cache服务器上去查找。为了避免无谓的查询,在每个cache服务器上保存其兄弟服务器的缓存关键字,以bloomfilter方式存储,再去其他cache服务器查找之前,先检查该结构是否有url,如果有存在url,再去对应服务器查找。

误判情况: 对应服务器不存在该URL的缓存。

Bloomfilter 的应用场景相关推荐

  1. 【redis】详解布隆过滤器BloomFilter的原理,使用场景和注意事项

    文章目录 1. 什么是布隆过滤器 2. 实现原理 2.1 HashMap 的问题 2.2 布隆过滤器数据结构 2.3 BloomFilter 的缺点 2.4 如何选择哈希函数个数和布隆过滤器长度 3. ...

  2. 从BloomFilter到Counter BloomFilter

    文章目录 前言 1. Traditional BloomFilter 2. Counter BloomFilter 本文traditional bloomfilter 和 counter bloomf ...

  3. 面试官问:BitMap了解么?在什么场景下用过?碰到过什么问题?

    点击上方蓝色"方志朋",选择"设为星标" 回复"666"获取独家整理的学习资料! Bit-map的基本思想就是用一个bit位来标记某个元素对 ...

  4. Redis 高级主题之布隆过滤器(BloomFilter)

    最近计划准备整理几篇关于Reids高级主题的博文,本文整理的是关于布隆过滤器在Redis中如何应用,先来一张思维导图浏览全文. 1. 认识BloomFilter 1.1 原理 布隆过滤器,英文叫Blo ...

  5. 用Redis快速实现BloomFilter!

    背景 最近工作上有个类似需求是: 现有约3亿条数据词典存在于一个csv文件A中,作为数据源.对于 用户输入的任意单词M,需要快速的在A中匹配M单词是否存在.(A文件约3G大小左右,总行数三亿) 拿到这 ...

  6. BloomFilter–大规模数据处理利器(转)

    BloomFilter–大规模数据处理利器 Bloom Filter是由Bloom在1970年提出的一种多哈希函数映射的快速查找算法.通常应用在一些需要快速判断某个元素是否属于集合,但是并不严格要求1 ...

  7. HBase之BloomFilter

    HBase的Get/Scan操作流程   hbase中有BloomFilter的功能,可以在有些情况下过滤掉不需要的hfile,节省IO. BloomFilter作用 BloomFilter在HBas ...

  8. HBase中Bloomfilter类型的设置及使用的理解

    1.Bloomfilter的原理?   可参考  http://hi.baidu.com/yizhizaitaobi/blog/item/cc1290a0a0cd69974610646f.html 2 ...

  9. 转载:Redis 应用场景

    2019独角兽企业重金招聘Python工程师标准>>> 1.  MySql+Memcached架构的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载 ...

最新文章

  1. 关于mouseenter、mouseover、mouseout、mouseleave的理解
  2. python是c语言写的吗-C语言是学python的基础吗?
  3. 软件测试中的α测试、β测试和λ测试
  4. php el表达式,JSP EL表达式学习
  5. git clone github_GitHub为什么连接缓慢以及解决方法
  6. 5种改善服务器日志记录的技术
  7. 仪征市第二中学计算机老师,静心倾听花自开 ——仪征市第二中学徐丞老师
  8. 简书和微博的区别是什么
  9. 基于SSM的新闻管理系统
  10. ASA 5520 ASDM 配置
  11. Html光标跟随粒子特效
  12. 前端项目搭建基本流程
  13. TCP-Drinc:Smart Congestion Control Based on Deep Reinforcement Learning笔记
  14. 牛客练习赛50(牛客1080F):F.tokitsukaze and Another Protoss and Zerg(组合数学 + NTT + 启发式)
  15. macApp开发碰到的坑
  16. bind: An operation on a socket could not be performed because the system lacked sufficient buffer sp
  17. C语言例题及解析(1)
  18. 《画解数据结构》九张动图,画解队列
  19. linux 卸载nexus,Linux下安装maven和nexus
  20. Linux入门学习——ssh基础操作

热门文章

  1. Redis运维和开发学习笔记(1) Redis简介
  2. Qt实现对json文件的解析
  3. 简述linux中动态库和静态库的制作调用流程
  4. 系统学Android从零开始,详细的Android学习指南
  5. kubernetes对象之deployment
  6. 关于秒杀系统优化方向
  7. 【Qt开发】QT对话框去掉帮助和关闭按钮 拦截QT关闭窗口的CloseEvent
  8. Zookeeper的api的简单使用(转载)
  9. SqlHelper模板
  10. silverlight 如何在浏览器的新页面里打开一个xaml