布隆过滤器与Redis的BitMap之区别

海量数据判重——布隆过滤器(Bloom filter)与Bitmap对比 前言 之前写过一篇Bitmap在海量整数排序中应用的博客,在看过布隆过滤器之后,感觉两个有些相似,但是又有区别,在查阅了很多资料之后,这里决定稍作总结。 关于布隆过滤器(Bloom filter)的介绍部分,大多翻译自Wikipedia 正文布隆过滤器简介 布隆过滤器(Bloom filter)是一个高空间利用率的概率性数据结构,由Burton Bloom于1970年提出。被用于测 阅读详情

布隆过滤器


特点:占用空间更小; 可以用来判断一个数据是否存在;
布隆过滤器说有,那么该数据不一定,但是布隆说没有一定没有;
优点:节省空间 ;
缺点:
        1.会出现误判;
        解决误判的方式一:在布隆过滤器初始化的时候给一个相对大的储存空间,这样误判率会降低 , 但是相反也会更占用空间;
        解决误判的方式二:增加hash函数的计算个数 , 但是cpu计算时间会更长;

        2.只能重建不能删除,因为会殃及别的key;
        3.不能储存某一个具体的key数据,只能放key对应的hash函数值;

        4. 不能直接取出具体数据;

应用场景:

主要应用于大规模数据下不需要精确过滤的场景,如检查垃圾邮件地址,爬虫URL地址去重,解决缓存穿透问题等;

 

BitMap


特点:  Bit-map的基本思想就是用一个bit位来标记某个元素对应的Value,而Key即是该元素。由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。但是储存到bitmap中的数据要求是唯一且不重复的;

优点:

        1.节省空间;

        2.运算效率高,不需要进行比较和移位;

        3.能够直接将id数据存储到布隆过滤器中; 同时能存也能取出;

        4.不会出现误判;

        5.能够直接从bitmap中删除数据,不需要重建,所以比较方便;

缺点:

        1. 所有的数据不能重复。即不可对重复的数据进行排序和查找;

        2. 只有当数据比较密集时才有优势;

应用场景:

表示连续(或接近连续,即大部分会出现)的关键字序列的状态(状态数/关键字个数  越小越好);

【中大厂面试题】 百度 java 后端校招最新面试题 在 JDK 1.7 版本之前, HashMap 数据结构是数组和链表,HashMap通过哈希算法将元素的键(Key)映射到数组中的槽位(Bucket)。如果多个键映射到同一个槽位,它们会以链表的形式存储在同一个槽位上,因为链表的查询时间是O(n),所以冲突很严重,一个索引上的链表非常长,效率就很低了。所以在JDK 1.8版本的时候做了优化,当一个链表的长度超过8的时候就转换数据结构,不再使用链表存储,而是使用红黑树。 阅读详情

相关推荐

Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊!

在大数据处理和高性能开发中,很多开发者都会遇到类似的问题:在空间利用上如何高效地判断元素是否存在?其中,Bitmap 和布隆过滤器(Bloom Filter)是两个常见的选择,但很多人常常对它们的特性和应用场景有模糊的认识。这篇文章以 Java 为例,为大家详细解析 Bitmap 和布隆过滤器的工作原理、应用场景、核心代码和实现技巧,帮助你在不同场景中合理选择。本文围绕 Bitmap 和布隆过滤器在 Java 开发中的应用展开,详细介绍了两者的区别、使用方法、性能分析以及典型应用场景。

喵手的博客 1097

简单理解:Bitmap和布隆过滤器(Bloom Filter)

Bitmap算法 与其说是算法,不如说是一种紧凑的数据存储结构。其实如果并非如此大量的数据,有很多排重方案可以使用,典型的就是哈希表。 public int[] removeDuplicates(int[] array) { int index = 0; int[] newArray = new int[array.length]; Map<Integer, Boolean> maps = new LinkedHashMap<Integer, Boolean>();

不如敲代码的博客 3848

bitmap和布隆过滤器简单总结

一、BitMap 解决的问题:大数据量下的排序、查找、去重。 1、关键 通过 bit位 表示一个数值的状态(是否存在),那么1MB能大约表示 800万数值 (1,000,000B * 8 bit ) 2、局限性: 1、内存限制:10位的数值(即99亿), 占用 1.25GB内存 2、一般应用在数值类型。字符串映射到 BitMap 存在Hash碰撞的问题(引入bloom filter) 3、不适合数据稀疏。比如要存入(10,10000,100000000)这三个数据(引入 Roaring BitMap) 3、应用场景 对 不重复的 密集整数 进行排序 查找数据是否存在海量集合中 找出没有重复的数

Bitmap 和 布隆过滤器傻傻分不清?你这不应该啊

一起梳理了 bitmap 和 布隆过滤器的原理、用法以及它们各自的优缺点和应用场景,大环境不好更要多多提升自身技术能力,而且现在面试三句不离大数据量和高并发,此类问题想要应对自如,不仅要有深度还要有广度,掌握这两个知识点多提供一种答案也是好的。写的不好大家对付看吧!

程序员内点事 1943

AD21导出gerber文件

文件–>制造输出–>Gerber Files 文件–>制造输出–>Gerber Files 通用、光圈和高级跟第一步一样 3.文件–>制造输出–>NC Drill Files 这个默认就可以了 主要参考视频来自bilibili添加链接描述 此篇博客主要是写给自己好记的,无其他商业用途 ...

新手小杨 1万+

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

ffmpeg 4.4 cenc-aes-ctr 加解密 MP4 工程性质分析

Dream_Dynasty的博客 3045

Redis 的Bitmap和布隆过滤器啥区别与关系

在数据处理领域,Redis 的 Bitmap 和布隆过滤器都是颇为独特且实用的工具。当面对海量数据,需要高效处理某些特定问题时,它们常被纳入考量。然而,许多人对二者的认知较为模糊。那么,Redis 的 Bitmap 和布隆过滤器到底有哪些区别与关系呢?接下来一起深入探究。

2403_88087488的博客 1530

HUAWEI华为荣耀MagicBook MateBook B D E X 13 14 16 笔记本MateStation台式机原装Win10出厂Windows11系统

HUAWEI华为MateBookX原装出厂系统恢复原厂系统,型号:MACHC-WAE9LP、EUL-W29P、MACHR-W19L、MACHR-W29、MACHD-WFE9、MRGF-16、MACHR-W19BL、MACHD-WFE9Q、WT-W19、Mach-W19、Mach-W29、WT-W09、WT-W19、MACH-W29等。HUAWEI华为MateBookE原装出厂系统恢复原厂系统,型号:PAK-AL09、GK-W7X、GK-G58、GK-W76、DRC-W76等。

QQ17855069的博客 17万+

【面试】Redis中Bitmap、布隆过滤器和Hypeloglog区别

​Redis中的Bitmap(位图)是一种较为特殊数据类型,它以最小单位bit来存储数据,我们知道一个字节由 8个 bit 组成,和传统数据结构用字节存储相比,这使得它在处理大量二值状态(true、false 或 0、1等只有两种状态)数据时具有极高的空间效率。不过,它不是一种全新的数据类型,其底层实现仍是基于 String 类型。HyperLogLog(HLL)和Bloom Filter(布隆过滤器)是两种常用于大规模数据处理的概率数据结构,它们用于解决不同的问题,并具有不同的特性和应用场景。

精益求精 1094

Ubuntu 20.04 server 安装

Ubuntu 20.04 server 安装 前面我们介绍了 Ubuntu Desktop 版本的安装,今天我们来看看 Ubuntu server 版本的安装。Ubuntu Server 版本的安装和 Desktop 有很大的区别,并且全程不能使用鼠标,只能通过键盘。 从光盘或 U 盘启动到 Welcome 界面,选择语言,一般都是使用 English,所以保保持默认,直接按回车即可; 系统检测到了新的版本,问你是否是否更新,这里我们不需要安装新的版本,所以选项 Continue without upda

as900的博客 1万+

手把手带你搭建一个语音对话机器人:5分钟定制个人AI小助手

通过本文的简单步骤,你已经掌握了如何用 Python 搭建一个语音对话机器人。我们使用了实现语音识别,利用 OpenAI API 生成对话内容,并通过gTTS将文本转换为语音。整个流程非常简洁,你可以根据自己的需求进一步扩展机器人功能,甚至将其集成到实际的应用场景中。

小蜗牛的珍贵百宝箱 4805

基于Redis分布式BitMap的应用

一、序言 在实际开发中常常遇到如下需求:判断当前元素是否存在于已知的集合中,将已知集合中的元素维护一个HashSet,使用时只需耗时O(1)的时间复杂度便可判断出结果,Java内部或者Redis均提供相应的数据结构。使用此种方式除了占用内存空间外,几乎没有其它缺点。 当数据量达到亿级别时,内存空间的占用显著表现出来,BitMap便是解决此类问题的一种途径。 二、BitMap结构 1、内存消耗分析 Redis BitMap能够存储的数据范围为[0,2^32-1],超过Integer.MAX_VALUE上界值。

Java知识图谱的博客 1021

ROS从入门到精通2-1:机器人3D可视化工具——Rviz

本文详细介绍了Rviz是什么?为什么要使用这个工具?清晰地列出了Rviz的安装流程和界面的基本功能元素;讲解了Rviz基本数据类型与话题,并用两个实例深入理解Rviz数据可视化的过程

FRIGIDWINTER的博客 5345

Redis 布隆过滤器深度解析:原理、实现与实战应用全景指南

文章摘要:本文系统介绍了布隆过滤器在Redis中的实现与应用。首先阐述了布隆过滤器的基本概念、工作原理及其空间高效特性,详细讲解了RedisBloom模块的安装与核心命令。接着深入剖析了布隆过滤器的数学原理、误判率计算与参数优化策略。通过缓存穿透防护、黑名单过滤等典型案例,展示了其在高并发场景中的实用价值。同时对比分析了布隆过滤器与HyperLogLog、Set等数据结构的差异及适用场景,并提供了性能优化建议和常见误区提示。全文结合理论推导与实践经验,为开发者提供了布隆过滤器在Redis中的完整应用指南。

持续输出Java相关知识 1312

3、全面掌握QGIS开发:从调试到应用的全方位指南

本文全面介绍了QGIS开发的各个环节,涵盖插件调试、PyQGIS API导航、插件创建与分发、独立地理空间应用开发,以及全局和项目级首选项的管理。通过详细的步骤说明、代码示例和流程图,帮助开发者系统掌握QGIS扩展与集成的核心技能,并展望了未来在功能拓展、跨平台兼容性和技术融合方面的可能性。

hill8的博客 89

【软考之软件设计师】学习笔记

interface 接口implements 实现接口(与接口配套使用)接口里要是有方法定义,子类就会实现。

云轩阁 2533

Redis实战:如何用布隆过滤器防止缓存穿透(附Python代码)

本文深入探讨了在高并发场景下,如何利用布隆过滤器有效解决缓存穿透问题。通过分析缓存穿透的原理,并结合RedisBloom模块及Python代码实战,详细阐述了布隆过滤器的部署、集成方案与参数调优,为构建健壮的缓存系统提供了一套可落地的解决方案。

weixin_29230649的博客 368

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

redis_version:6.2.21默认自带布隆过滤器吗?

维度Redis 原生 (6.2.21)Redis + RedisBloom 模块PHP 客户端模拟布隆过滤器❌无✅有✅有 (应用层)性能N/A⭐⭐⭐⭐⭐ (C 语言, 内存紧凑)⭐⭐⭐ (网络 IO 多, PHP 计算)部署难度低中 (需编译/配置模块)低 (仅代码变更)准确性N/A标准布隆算法取决于哈希实现适用场景高并发、大数据量去重低并发、无法改服务端配置终极心法Redis 版本的数字,不代表功能的全集。模块系统是 Redis 强大的延伸手臂。别被版本号迷惑,要用看清真相。

长风破浪会有时的博客 454

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

http与https,一致哈希,布隆过滤

http与https 超文本传输协议HTTP协议:明文方式在Web浏览器和网站服务器之间传递信息,适宜不敏感数据 安全套接字层超文本传输协议HTTPS:由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议      一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。 一致哈希 解决分布式存储结构下动态增加删除节点带来的问题 性质: 1、平衡性...

天生我材必有用,千金散尽还复来。 348

Java面试场景高频题(一)

本文摘要: 布隆过滤器通过bitmap结构解决缓存穿透问题,具有高效查询和低内存占用优点,但存在误判可能且不支持删除操作; 查询优化方案包括多线程分批处理和并行查询,可显著提升大数据量查询效率; 事务失效场景包括异常类型不匹配、同类方法调用、多线程事务、私有方法调用等; count(1)、count(*)和count(字段)的区别主要在于统计范围和索引使用策略; 死锁示例展示了两个线程互相持有对方所需资源导致的阻塞情况。

sx40623746的博客 613

redis的布隆过滤器

上一节我们学会了如何使用HyperLogLog,知道在允许出现一定误差的情况下可以解决大数据量的统计分析。但是这有一个缺点,如果我们想知道某一个值是不是已经在 HyperLogLog 结构里面了,它就无能为力了。HyperLogLog只提供了pfadd和pfcount 命令。那我们常用的快手,抖音是怎么做到基本不重复的消息推送呢?我们好好思考下这个问题… 解决方式一:也是最容易想到的,将查看记录存进数据库,每次刷时再去数据库判断是否查看。如果是小数据量,十三举双手赞成。但是用户量一旦上来,数据库的这种方式就

My_daidai的博客 460

Bitmap 和 布隆过滤器

一起梳理了 bitmap 和 布隆过滤器的原理、用法以及它们各自的优缺点和应用场景,大环境不好更要多多提升自身技术能力,而且现在面试三句不离大数据量和高并发,此类问题想要应对自如,不仅要有深度还要有广度,掌握这两个知识点多提供一种答案也是好的。写的不好大家对付看吧!

lingqu+wx bjmsb06 1077

【HBZ分享】java中的BitSet 与 Redis中的BitMap 与 布隆过滤器

java中的BitSet 与 Redis中的BitMap 与 布隆过滤器

a645293829的博客 1138

狗东:布隆过滤器和BitMap有什么区别?

一起梳理了 bitmap 和 布隆过滤器的原理、用法以及它们各自的优缺点和应用场景,大环境不好更要多多提升自身技术能力,而且现在面试三句不离大数据量和高并发,此类问题想要应对自如,不仅要有深度还要有广度,掌握这两个知识点多提供一种答案也是好的。写的不好大家对付看吧!

m0_46995061的博客 723
上一篇: Linux命令之nohub命令
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值