redis—布隆过滤器

  • Post author:
  • Post category:其他




一、下载RedisBloom

补充:docker有直接集成好的环境

docker pull redislabs/rebloom
运行容器
docker run -p 6379:6379 --name redis-redisbloom redislabs/rebloom


https://github.com/RedisBloom/RedisBloom/releases

wget https://github.com/RedisBloom/RedisBloom/archive/refs/tags/v2.2.12.tar.gz

在这里插入图片描述



二、解压编译下载文件

解压

tar -zxvf v2.2.12.tar.gz

编译

cd 解压后文件地址
make

##三、修改配置文件

vim redis.conf
增加 loadmodule /xx/xx/redisbloom.so
chmod 777 切记要拥有可执行权限



三、启动redis

docker run -d --privileged=true -p 6379:6379 -v /home/chihai/redis_alone/conf/redis.conf:/usr/local/etc/redis/redis.conf 
-v /home/chihai/redis_alone/data:/data -v /home/chihai/redis_alone/log/redis.log:/data/redis/redis-log/redis.log --name 
myredis1 redis:6.2.6 redis-server /usr/local/etc/redis/redis.conf  --appendonly yes 

执行下bf命令检测下是否安装成功

在这里插入图片描述



四、内存占用估算

Bloom Filter会有几比较关键的值,根据这个值你是大致可以算出放多少条数据然后它的误伤率在多少时会占用多少系统资源的。这个算法有一个网址:

https://krisives.github.io/bloom-calculator/

,我们放入1000万条数据,假设误伤率在0.001%,看,它自动得出Redis需要申请的系统内存资源是多少?仅需17m左右

在这里插入图片描述

那么怎么解决这个误伤率呢?很简单的,当有误伤时业务或者是运营会来报误伤率,这时你只要添加一个小白名单就是了,相对于100万条数据来说,1000个白名单不是问题。并且bloom filter的返回速度超块,80-100毫秒内即返回调用端该Key存在或者是不存了。



五、布隆过滤器无法删除解决方案

  1. 定时异步重建
  2. 计数bloom filter
  3. redis-bloom插件中已经帮我们集成了布谷鸟过滤器,需要删除的场景可以结合布谷鸟过滤器使用


https://oss.redis.com/redisbloom/Cuckoo_Commands/#cfcount


在这里插入图片描述



版权声明:本文为chihaihai原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。