我们前面有讲到过 HyperLogLog 可以用来做基数统计,但它没提供判断一个值是否存在的查询方法,那我们如何才能查询一个值是否存在于海量数据之中呢?
如果使用传统的方式,例如 SQL 中的传统查询,因为数据量太多,查询效率又低有占用系统的资源,因此我们需要一个优秀的算法和功能来实现这个需求,这是我们今天要讲的——布隆过滤器。
开启布隆过滤器
在 Redis 中不能直接使用布隆过滤器,但我们可以通过 Redis 4.0 版本之后提供的 modules(扩展模块)的方式引入,本文提供两种方式的开启方式。
方式一:编译方式
1. 下载并安装布隆过滤器
git clone https://github.com/RedisLabsModules/redisbloom.git
cd redisbloom
make # 编译redisbloom
编译正常执行完,会在该目录生成一个 redisbloom.so 文件。
2.修改redis配置文件,使之加载该布隆过滤器,将上述编译后的redisbloom.so添加到配置文件
loadmodule /usr/local/RedisBloom-2.2.9/redisbloom.so
3.启动redis
redis-server redis.conf
方式二:Docker 方式
docker pull redislabs/rebloom # 拉取镜像
docker run -p6379:6379 redislabs/rebloom # 运行容器
启动验证
服务启动之后,我们需要判断布隆过滤器是否正常开启,此时我们只需使用 redis-cli 连接到服务端,输入 bf.add 看有没有命令提示,就可以判断是否正常启动了,如下图所示:

如果有命令提示则表名 Redis 服务器已经开启了布隆过滤器。(如果没有提示,可以使用命令测试一下,我的没有提示,但是也可以正常使用)
布隆过滤器的使用
布隆过滤器的命令不是很多,主要包含以下几个:

本文介绍了如何在Redis中启用布隆过滤器,通过编译或Docker方式,并展示了如何使用bf.add、bf.exists等命令。布隆过滤器是一种空间效率极高的概率型数据结构,用于判断一个元素是否可能在一个集合中。虽然可能会有误判,但不会漏判。文中还给出了Python实现布隆过滤器的代码示例,以及其在垃圾邮件过滤、URL去重等场景的应用。
最低0.47元/天 解锁文章
563

被折叠的 条评论
为什么被折叠?



