布隆过滤器

6/3/2021 布隆过滤器

http://share.alihanniba.com/mac/2021-06-03-141634.jpg

题图:pixabay

#

布隆过滤器(BloomFilter)是一种用来高效判断某个key是否在集合中的数据结构。

插入效率(O(len(hash func)))

查询效率(O(1))

缺点:

  1. 无法删除
  2. 不是100%准确。但是个人觉得这个是相对的

# 原理

先了解下Redis的bitmap数据结构。它是基于Redis的string类型实现的。基本含义是用一个bit位来映射某个元素的状态。但是这个状态只能是0或1,因为bit位只能表示0或1两种状态。它的优势是能大量节省内存空间。

# redis-cli
127.0.0.1:6379> setbit ali:88 0 1
(integer) 0
127.0.0.1:6379> strlen ali:88
(integer) 1
127.0.0.1:6379> setbit ali:88 1 1
(integer) 0
127.0.0.1:6379> strlen ali:88
(integer) 1
127.0.0.1:6379> setbit ali:88 9 1
(integer) 0
127.0.0.1:6379> strlen ali:88
(integer) 2
127.0.0.1:6379>
1
2
3
4
5
6
7
8
9
10
11
12
13
14

image-20210304150022766

布隆过滤器

#

最后更新时间: 1/8/2022, 9:02:35 AM