RedisBloom 为 Redis 添加了一套概率数据结构,包括布隆过滤器(Bloom filter)、库克过滤器(Cuckoo filter)、计数最小草图(Count-min sketch)、Top-K 和 t-digest。通过使用这些数据结构,您可以在无需存储所有流元素的情况下查询流数据。每种概率数据结构能够回答特定类型的问题,如下所示:
回答这些问题可能需要大量的内存,但您可以通过设置可控的准确性和内存消耗之间的权衡来显著降低内存需求。概率数据结构通常比准确算法速度更快,占用的内存也更少。
RedisBloom 是 Redis Stack 的一部分。
您可以选择在 Docker 容器中或在本地机器上安装 RedisBloom。
要快速尝试 RedisBloom,您可以使用 Docker 启动一个实例:
docker run -p 6379:6379 -it --rm redis/redis-stack-server:latest
如果您更愿意在本地机器上构建 RedisBloom,以下是操作步骤。支持的操作系统包括主要的 Linux 发行版和 macOS。
1. 安装 Redis
首先,您需要安装 Redis。以下示例展示了如何在一个干净的 Ubuntu Docker 镜像中构建 Redis:
mkdir ~/Redis
cd ~/Redis
apt-get update -y && apt-get upgrade -y
apt-get install -y wget make pkg-config build-essential
wget https://download.redis.io/redis-stable.tar.gz
tar -xzvf redis-stable.tar.gz
cd redis-stable
make distclean
make
make install
2. 获取并构建 RedisBloom
接下来,获取 RedisBloom 的 Git 仓库并构建它:
apt-get install -y git
cd ~/Redis
git clone --recursive https://github.com/RedisBloom/RedisBloom.git
cd RedisBloom
./sbin/setup
bash -l
make
然后退出 bash。
注意:如果需要获取 RedisBloom 的特定版本,例如 2.4.5,可以在
git clone
命令中添加-b v2.4.5
。
3. 配置 Redis 加载 RedisBloom 模块
运行 make run -n
并复制 RedisBloom 可执行文件的完整路径(例如 /root/Redis/RedisBloom/bin/linux-x64-release/redisbloom.so
)。
然后,将 RedisBloom 模块添加到 redis.conf
文件中,使 Redis 启动时加载该模块:
apt-get install -y vim
cd ~/Redis/redis-stable
vim redis.conf
在 MODULES
部分添加以下行(使用上一步复制的完整路径):
loadmodule /root/Redis/RedisBloom/bin/linux-x64-release/redisbloom.so
保存并退出 vim(按 ESC
然后输入 :wq
,最后按 ENTER
)。
有关模块的更多信息,请参见 Redis 官方文档。
4. 运行 Redis
在后台运行 Redis 服务器,然后启动 Redis CLI:
cd ~/Redis/redis-stable
redis-server redis.conf &
redis-cli
安装 RedisBloom 后,您可以使用 Redis CLI 进行交互。
创建一个新的布隆过滤器并添加一个项目:
# 127.0.0.1:6379> BF.ADD newFilter foo
(integer) 1
检查项目是否存在于过滤器中:
# 127.0.0.1:6379> BF.EXISTS newFilter foo
(integer) 1
在这个例子中,返回 1 表示 foo
很可能在由 newFilter
表示的集合中。然而,请注意布隆过滤器可能会产生假阳性。
检查另一个项目是否存在于过滤器中:
# 127.0.0.1:6379> BF.EXISTS newFilter bar
(integer) 0
返回 0 表示 bar
肯定不在集合中。布隆过滤器不允许假阴性。
以上就是如何安装和使用 RedisBloom 的完整指南。通过这些步骤,您可以轻松设置 RedisBloom,并开始利用布隆过滤器等概率数据结构进行高效的数据处理。