理论
TODO
实现
谷歌 guava 布隆过滤器
- 内存操作,快
- 重启即丢失
- 存储在单机内存中,无法分布式
- 无法增量
redis 布隆过滤器
- 分布式,应用重启不丢失 (隔离开了)
- 如果布隆过滤器容量达到阈值,会在它之上添加一个新的布隆过滤器
- 需要网络IO,比谷歌布隆过滤器慢一点
使用
编译
cd RedisBloom make
- 根据
Makefile
, 最后会产出redisbloom.so
文件在当前文件夹中
加载
- 在
redis.conf
中添加# 加载 rebloom 模块
loadmodule <target_dir>/rebloom.so
命令测试
进入命令行
./ redis-cli -p 6379
添加单个
bf.add bloomKey value1 (Integer) 1
添加多个
bf.madd bloomKey value1 value2 (Integer) 0 (Integer) 1
判断单个存在
bf.exsits bloomKey value2 (Integer) 0
判断多个是否存在
bf.mexsits bloomKey value1 value2 (Integer) 1 (Integer) 1
和 springboot 的 redis-starter 的整合
- 配合
lua
即可,详见 使用 lua