RedisBloom安装与使用

RedisBloom安装与使用

RedisBloom模块提供了四种数据类型:

  • Bloom Filter (布隆过滤器)
  • Cuckoo Filter(布谷鸟过滤器)
  • Count-Mins-Sketch
  • Top-K

Bloom Filter和 Cuckoo 用于确定(以给定的确定性)集合中是否存在某项。

使用 Count-Min Sketch 来估算子线性空间中的项目数。

使用Top-K 维护K个最频繁项目的列表。

作用

RedisBloom能够解决缓存穿透的问题。

下载地址

1
git clone https://github.com/RedisBloom/RedisBloom.git

编译redisbloom

1
make

编译报错

1
deps/readies/mk/main:6: *** GNU Make version is too old. Aborting..  Stop.

原因:make版本太低需要make>=4

1
2
3
4
5
6
wget http://mirrors.ustc.edu.cn/gnu/make/make-4.4.tar.gz
tar -xzvf make-4.4.tar.gz
./configure --prefix=/usr/local/make
make
make install
ln -s /usr/local/make/bin/make /usr/bin/make

修改redis配置文件redis.conf,添加如下内容

1
loadmodule /opt/RedisBloom/bin/linux-x64-release/redisbloom.so

官方文档

测试布隆过滤器

1
2
3
4
5
6
192.168.2.127:8001> BF.ADD testusers dev1
(integer) 1
192.168.2.127:8001> BF.EXISTS testusers dev2
(integer) 0
192.168.2.127:8001> BF.EXISTS testusers dev1
(integer) 1

测试布谷鸟过滤器

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
192.168.2.127:8001> CF.EXISTS newCuckooFilter foo
(integer) 0
192.168.2.127:8001> CF.RESERVE newCuckooFilter 1000
OK
192.168.2.127:8001> CF.ADD newCuckooFilter foo
(integer) 1
192.168.2.127:8001> CF.EXISTS newCuckooFilter foo
(integer) 1
192.168.2.127:8001> CF.EXISTS newCuckooFilter notpresent
(integer) 0
192.168.2.127:8001> CF.DEL newCuckooFilter foo
(integer) 1
192.168.2.127:8001> CF.EXISTS newCuckooFilter foo
(integer) 0

参考