01-Redis 特殊数据类型之 bloom-filter
简介
参考:布隆过滤器
安装
Redis 4.0 之后才提供了布隆过滤器。布隆过滤器是作为一个插件加载到 Redis Server 中的,要使用布隆过滤器,需要在 Redis 中安装布隆过滤器插件,步骤如下:
下载 redisbloom 插件(Redis官网下载即可)
下载地址:https://github.com/RedisLabsModules/redisbloom/
找到最新的 tag 下载 tar.gz 格式
1
[root@redis]# wget https://github.com/RedisLabsModules/rebloom/archive/v1.1.1.tar.gz
解压并安装,生成 .so 文件
1
2
3
4
5[root@redis]# tar -zxvf v1.1.1.tar.gz
[root@redis]# cd redisbloom-1.1.1/
[root@redisbloom-1.1.1]# make
[root@redisbloom-1.1.1]# ls
contrib Dockerfile docs LICENSE Makefile mkdocs.yml ramp.yml README.md rebloom.so src tests在 Redis 配置文件(redis.conf)中加入该模块。
1
2
3
4
5
6
7[root@redis]# vim redis.conf
#####################MODULES#################### # Load modules at startup. If the server is not able to load modules
# it will abort. It is possible to use multiple loadmodule directives.
loadmodule /usr/local/redis/redisbloom-1.1.1/rebloom.so启动 Redis。
1
[root@redis]# redis-server redis.conf
测试是否安装成功。
1
2
3
4
5
6127.0.0.1:6379> bf.add users user2
(integer) 1
127.0.0.1:6379> bf.exists users user2
(integer) 1
127.0.0.1:6379> bf.exists users user3
(integer) 0
布隆过滤器的基本用法
布隆过滤器有两个基本指令,它的用法和 set 集合的 sadd
和 sismember
差不多。
bf.add
添加元素,bf.add
只能一次添加一个元素,如果想要一次添加多个,就需要用到bf.madd
指令bf.exists
查询元素是否存在,同样如果需要一次查询多个元素是否存在,就需要用到bf.mexists
指令。
1 |
|
上面使用的布隆过过滤器只是默认参数的布隆过滤器,它在我们第一次 add
的时候自动创建。
Redis 也提供了可以自定义参数的布隆过滤器,只需要在 add
之前使用 bf.reserve
指令显式创建就好了。如果对应的 key
已经存在,bf.reserve
会报错。
bf.reserve
有三个参数,分别是 key
、error_rate
(错误率) 和 initial_size
:
error_rate
越低,需要的空间越大,对于不需要过于精确的场合,设置稍大一些也没有关系。initial_size
表示预计放入的元素数量,当实际数量超过这个值时,误判率就会提升,所以需要提前设置一个较大的数值避免超出导致误判率升高。
默认的 error_rate
是 0.01
,默认的 initial_size
是 100
。
01-Redis 特殊数据类型之 bloom-filter
https://flepeng.github.io/041-Redis-41-核心概念-01-Redis-特殊数据类型之-bloom-filter/