REDIS07_布隆过滤器BloomFilter的概述、优缺点、使用场景、底层原理、布谷鸟过滤器(三)

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: REDIS07_布隆过滤器BloomFilter的概述、优缺点、使用场景、底层原理、布谷鸟过滤器(三)

(3). 判断是否存在


向布隆过滤器查询某个key是否存在时,先把这个key通过相同的多个hash函数进行运算,查看对应的位置是否都为1,


只要有一个位为 0,那么说明布隆过滤器中这个 key 不存在


如果这几个位置全都是 1,那么说明极有可能存在


因为这些位置的1可能是因为其他的key存在导致的,也就是前面说过的hash冲突


就比如我们在add了字符串wmyskxz数据之后,很明显下面1/3/5这几个位置的1是因为第一次添加的 wmyskxz 而导致的


此时我们查询一个没添加过的不存在的字符串inexistent-key,它有可能计算后坑位也是1/3/5 ,这就是误判了


微信图片_20220109184413.png

微信图片_20220109184416.png


⑥. 布隆过滤器误判率,为什么不要删除


布隆过滤器的误判是指多个输入经过哈希之后在相同的bit位置1了,这样就无法判断究竟是哪个输入产生的,


因此误判的根源在于相同的 bit 位被多次映射且置 1。


这种情况也造成了布隆过滤器的删除问题,因为布隆过滤器的每一个 bit 并不是独占的,很有可能多个元素共享了某一位。


如果我们直接删除这一位的话,会影响其他的元素


特性


一个元素判断结果为没有时则一定没有,


如果判断结果为存在的时候元素不一定存在。


布隆过滤器可以添加元素,但是不能删除元素。因为删掉元素会导致误判率增加。


⑤. 布谷鸟过滤器(了解)


①. 为了解决布隆过滤器不能删除元素的问题,布谷鸟过滤器横空出世。论文《Cuckoo Filter:Better Than Bloom》


②. 作者将布谷鸟过滤器和布隆过滤器进行了深入的对比。相比布谷鸟过滤器而言布隆过滤器有以下不足:

查询性能弱、空间利用效率低、不支持反向操作(删除)以及不支持计数


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
1月前
|
NoSQL Redis
Redis 执行 Lua保证原子性原理
Redis 执行 Lua 保证原子性原理
117 1
|
1月前
|
监控 NoSQL Redis
看完这篇就能弄懂Redis的集群的原理了
看完这篇就能弄懂Redis的集群的原理了
52 0
|
4天前
|
缓存 NoSQL Linux
redis的原理(三)
redis的原理(三)
redis的原理(三)
|
4天前
|
存储 缓存 NoSQL
redis的原理(四)
redis的原理(四)
|
4天前
|
存储 缓存 NoSQL
redis的原理(二)
redis的原理(二)
|
4天前
|
缓存 NoSQL 安全
Redis的原理(一)
Redis的原理(一)
|
29天前
|
运维 监控 NoSQL
【Redis】哨兵(Sentinel)原理与实战全解~炒鸡简单啊
Redis 的哨兵模式(Sentinel)是一种用于实现高可用性的机制。它通过监控主节点和从节点,并在主节点故障时自动进行切换,确保集群持续提供服务。哨兵模式包括主节点、从节点和哨兵实例,具备监控、通知、自动故障转移等功能,能显著提高系统的稳定性和可靠性。本文详细介绍了哨兵模式的组成、功能、工作机制以及其优势和局限性,并提供了单实例的安装和配置步骤,包括系统优化、安装、配置、启停管理和性能监控等。此外,还介绍了如何配置主从复制和哨兵,确保在故障时能够自动切换并恢复服务。
|
1月前
|
消息中间件 存储 NoSQL
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
本文档介绍了如何使用 Go 语言中的 `go-redis` 库操作 Redis 数据库
redis实战——go-redis的使用与redis基础数据类型的使用场景(一)
|
1月前
|
存储 消息中间件 NoSQL
Redis命令详解以及存储原理
Redis命令详解以及存储原理
|
1月前
|
存储 NoSQL Redis
Redis存储原理与数据模型
Redis存储原理与数据模型