布隆过滤器笔记

课程地址

布隆过滤器由一个很长的二进制向量一系列哈希函数组成

特性:布隆过滤器可以告诉我们 "某样东西一定不存在 或者可能存在",也就是说布隆过滤器说这个数不存在则一定不存在,布隆过滤器说这个数存在可能不存在。这个特性能很好地被用于解决 "Redis 缓存穿透"的问题

原理:使用多个哈希函数将同一个键值映射到不同的位置,所以布隆过滤器的时间复杂度是 O(h),其中 h 是哈希函数的个数

判断是否存在:

python 复制代码
exist = all(bitmap[hash(key)] == 1 for hash in hashers)

事实上,不同的 key 可能被映射到同一个哈希值。例如下面的例子中"你好"和 "hello" 都被映射到下标 2,出现了哈希冲突:

使用多个 hash 函数的目的就是为了避免哈希冲突导致的误判

在实际的布隆过滤器工具包中,误判率是可以配置的,且误判率越低,需要的 bitmap 越长,需要的 hash 函数个数越多,运行时间也越长

布隆过滤器的优点:

  • 速度快,空间省
  • 保密性强,不存储元素本身,只计算哈希

但是受到二进制只能存储 2 种状态的限制,布隆过滤器不能删除元素

相关推荐
小吴编程之路1 天前
MySQL 索引核心特性深度解析:从底层原理到实操应用
数据库·mysql
~莫子1 天前
MySQL集群技术
数据库·mysql
凤山老林1 天前
SpringBoot 使用 H2 文本数据库构建轻量级应用
java·数据库·spring boot·后端
就不掉头发1 天前
Linux与数据库进阶
数据库
与衫1 天前
Gudu SQL Omni 技术深度解析
数据库·sql
咖啡の猫1 天前
Redis桌面客户端
数据库·redis·缓存
oradh1 天前
Oracle 11g数据库软件和数据库静默安装
数据库·oracle
what丶k1 天前
如何保证 Redis 与 MySQL 数据一致性?后端必备实践指南
数据库·redis·mysql
_半夏曲1 天前
PostgreSQL 13、14、15 区别
数据库·postgresql
把你毕设抢过来1 天前
基于Spring Boot的社区智慧养老监护管理平台(源码+文档)
数据库·spring boot·后端