理论

TODO

实现

谷歌 guava 布隆过滤器

  • 内存操作,快
  • 重启即丢失
  • 存储在单机内存中,无法分布式
  • 无法增量

redis 布隆过滤器

  • 分布式,应用重启不丢失 (隔离开了)
  • 如果布隆过滤器容量达到阈值,会在它之上添加一个新的布隆过滤器
  • 需要网络IO,比谷歌布隆过滤器慢一点

使用

编译

cd RedisBloom make

  • 根据 Makefile , 最后会产出 redisbloom.so 文件在当前文件夹中

加载

  • redis.conf 中添加
    1. # 加载 rebloom 模块
    2. 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 的整合