Redis原生是不带有布隆过滤器的,Redis 4.0之后支持插件,可以安装插件,这样就可以使用布隆过滤器了。
项目地址:
https://github.com/RedisBloom/RedisBloom
(我自己fork的地址:https://github.com/M000M/RedisBloom)
安装布隆过滤器插件步骤:
- git clone 项目地址
- 进入项目RedisBloom
- make 编译代码
- 可以看到 redisbloom.so 文件
- 重新启动redis,带上相应的插件就能使用布隆过滤器了
- 执行命令
redis-server redis-6379.conf --loadmodule (RedisBloom项目所在的路径)/RedisBloom/redisbloom.so [INITIAL_SIZE 100000] (INITIAL_SIZE可以不写,使用默认的) - 登录Redis客户端就可以使用Bloom Filter了
- 命令 bf.add 添加; bf.exists 判断对应的布隆过滤器中是否存在指定的值
1. 新建布隆过滤器
bf.reserve {key} {error_rate} {size}
error为容错率,取值范围我饿 0 ~ 1;数值越小,占用内存越大,占用CPU资源越大;
size为容量,添加的条目超过这个数值后,性能将开始下降;实际降级将取决于超过的程度;随着条目呈指数增长,性能将呈线性下降;
2. 添加过滤器与值
bf.add {key} {value}
当key对应的Bloom Filter不存在时,将添加新的名为key的Bloom Filter,使用默认的error_rate和size;
3. 判断Bloom Filter中是否存在某个值
bf.exists {key} {value}
存在返回1,否则返回0