ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

Redis基础篇——布隆过滤器

2021-12-20 15:59:08  阅读:143  来源: 互联网

标签:存在 判断 hash 二进制 误判 Redis 布隆 过滤器 数据


不太精确的set结构,使用contains方法判断对象是否存在时可能误判。
只要参数设置合理,精确度就相对足够精确。
只会误判存在,不会误判不存在。
一种数据结构,由一串很长的二进制向量组成,可以看成一个二进制数组,当做一个容器,初始默认值都是0。

1、使用场景

(1)爬虫:判断某个url是否已经爬过了;
(2)垃圾邮箱的过滤;
(3)判断新增的10W个号码,是否已经存在于10亿个号码池里了。

2、操作

bf.add
bf.exists
添加:
通过多个hash函数计算出多个index,将对应位置都置为1。
判断存在:
①把数据用这些hash函数都计算一次,只要有一个为0,就表示数据不存在;
②那么能不能说,如果一个数据的这些hash函数计算结果都是1,是不是就说明数据是存在的?答案是不能,因为多个数据可能这些hash函数计算结果一样。
所以说,布隆过滤器只能判断数据的不存在,不能判断存在。

3、优缺点

(1)二进制数组,占用内存小,插入、查询都快;
(2)数据越多,误判率越高,无法判断数据的存在,无法删除数据。

4、redis实现

(1)bitmap

另外写了一篇。

(2)Redisson

另外写了一篇。

标签:存在,判断,hash,二进制,误判,Redis,布隆,过滤器,数据
来源: https://blog.csdn.net/HelenAndLi/article/details/122043153

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有