Linux中使用Docker安装Redis容器以及布隆过滤器

前言

在项目中,一般普遍都会用到Redis,在准备学习Redis的相关的东西时,其中提到了缓存穿透、缓存击穿、缓存雪崩的问题。其中对于缓存穿透的一个解决方案中就有提到布隆过滤器,而布隆过滤器的也有许多提供方式(Guava、Redisson、RedisBloom),前面都是基于本地的,所以就选择了Redis官方提供的布隆过滤器插件。

安装准备

在使用Docker创建Redis容器时,有一个官方的Redis版本,也有提供了布隆过滤器插件的版本,

但是创建Redis容器时,一般需要下载其配置文件然后需要修改里面的一些参数然后挂载给容器,但是我拉取带插件的容器时配置文件一直不生效(也有可能是我哪里步骤错了,但是普通镜像可以正常挂载),后面就去拉取官方普通镜像,然后手动安装布隆过滤器插件。

以下是整个详细流程:

1.下载配置文件

因为要使用用配置文件挂载启动,所以先在官网将对应的版本的配置文件下载下来。

2.修改配置文件

下载好配置文件后,其中有几个地方需要更改。

配置文件需要修改即注意事项:
1.注释掉bind 解除访问限制  但在生产环境中得进行设置,此处是供学习练习,所以注释该行。
#解除本地限制 注释bind 127.0.0.1 或者改为0.0.0.0 
bind 0.0.0.0

2.查看daemonize 是否为no
#这个配置不要会和docker -d 命令 冲突
# 服务器运行模式,Redis以守护进程方式运行,默认为no,改为yes意为以守护进程方式启动,可后台运行,除非kill进程,改为yes会使配置文件方式启动redis失败,如果后面redis启动失败,就将这个注释掉
daemonize no


3.修改appendonly 为yes
#默认为no,redis持久化,可以改为yes
appendonly yes

4.建议将timeout改为0 即不关闭
#当一个客户端闲置多长时间后关闭连接,如果指定为0,表示关闭该功能
timeout 0

5.
protected-mode no # 不开启保护模式,否则只能本地访问

6.设置redis的数据淘汰策略最常用的allkeys-lru,即删除最近使用最少的key
maxmemory-policy allkeys-lru

7.如使用布隆过滤器则需要在配置文件中加入
#查找loadmodule 找到指定位置
loadmodule /root/bloom/redisbloom-2.2.4/rebloom.so   (前面为自己的路径)

3.下载布隆过滤器插件

https://github.com/RedisBloom/RedisBloom

将下载好的压缩包保存,然后等会需要上传至Linux操作系统中。

安装

首先在虚拟机中创建好需要挂载的目录(目录自己随便创建即可)

mkdir -p /user/docker/redis/conf/
mkdir -p /user/docker/redis/data/

使用dokcer命令拉取指定版本的redis镜像这里以6.0版本为例

docker pull redis:6.0

将之前下载好的布隆过滤器解压包上传至redis的目录并解压

进入目录
cd /user/docker/redis
解压并安装
tar -zxf RedisBloom-2.2.6.tar.gz
cd RedisBloom-2.2.6/
make

遇到make命令无法识别就先下载

yum -y install make

make后我报了个127错误,经查询是由于系统内没有c的编译器,而Redis是基于C/C++的。

下载gcc

yum -y install gcc gcc-c++ autoconf pcre pcre-devel make automake

下载后回到cd RedisBloom-2.2.6/目录中make成功

make成功后会生成一个redisbloom.so文件

将这个so的文件目路径写入redis.conf中

loadmodule /user/docker/redis/RedisBloom-2.2.6/redisbloom.so

将配置好的redis.conf文件上传至redis.conf目录

使用docker命令并以配置文件的方式挂载redis容器

docker run -p 6379:6379 --name redis -v /user/docker/redis/RedisBloom-2.2.6/redisbloom.so:/user/docker/redis/RedisBloom-2.2.6/redisbloom.so -v /user/docker/redis/conf/redis.conf:/etc/redis/redis.conf -v /user/docker/redis/data:/data -d redis:6.0 redis-server /etc/redis/redis.conf

💡注意:一定要将在linux中的布隆过滤器的地址也挂载给redis容器,不然容器将无法启动布隆插件(之前忘记将目录挂载给redis容器,导致进入容器测试后发现无法识别布隆命令然后找了半天问题),最后面这段命令表示在创建容器后执行这段命令即启动布隆过滤器。

创建好容器后进入容器

docker exec -it redis bash
测试连接
redis-cli
输入布隆命令进行测试
ba.add example user1

到此表示成功了。可以使用redis管理工具进行进一步测试。

成功创建后一些便捷的设置,开放端口和容器自启动等。

开放防火墙指定端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
重启防火墙
firewall-cmd --reload
将redis设置为开机启动
docker update --restart=always  redis

<think>好的,我现在需要帮用户解决如何通过Docker安装RedisBloom模块的问题。首先,我得回忆一下RedisBloom是什么。RedisBloom是一个Redis模块,提供了布隆过滤器、计数布隆过滤器等数据结构。用户想用Docker安装它,所以需要找到合适的方法。 首先,我想到Docker安装Redis模块通常有两种方法:一种是使用已经包含模块的Redis镜像,另一种是在自定义Dockerfile中自己构建。用户可能希望步骤简单,所以推荐使用官方或第三方已经集成好的镜像会更方便。 我记得Redis的官方镜像支持通过环境变量加载模块。例如,可以使用`redislabs/rebloom`这个镜像,因为RedisBloom是由Redis Labs维护的,他们应该提供了预编译的镜像。这样用户只需要运行一个命令即可,比如`docker run -p 6379:6379 redislabs/rebloom`。这个方法应该是最快捷的,不需要额外配置。 不过,如果用户需要使用特定版本的Redis或者有其他模块需要一起安装,可能需要自定义Dockerfile。这时候就需要在Dockerfile里从Redis的基础镜像开始,然后下载RedisBloom的源码,编译成模块,再在redis.conf中配置加载该模块。但这个过程相对复杂,用户可能需要指导如何编写Dockerfile和配置文件。 另外,用户可能还会问如何验证安装是否成功。这时候需要进入Redis容器使用`redis-cli`执行命令,比如`BF.ADD`来测试布隆过滤器是否可用。如果返回正确的结果,说明模块安装成功。 还需要注意的一点是,如果用户使用docker-compose,可能需要编写一个docker-compose.yml文件,指定镜像和端口映射等配置。这样方便管理和部署,特别是当有多个服务需要协同工作时。 最后,需要确保引用的资料准确。比如引用中提到使用`docker search redis`来搜索镜像,但实际RedisBloom镜像可能不在默认仓库中,所以直接推荐使用`redislabs/rebloom`会更准确。同时,用户提到的引用中有安装GitLab和Redis的步骤,可以借鉴其中的Docker命令和配置方法,但需要调整以适应RedisBloom的具体情况。 总结步骤应该是:推荐使用预构建的镜像,提供运行命令;或者自定义Dockerfile的方法。然后验证安装,最后可能扩展相关问题,比如性能调优或使用场景。</think>### 通过Docker安装RedisBloom模块的方法 #### 方法1:使用预构建镜像(推荐) RedisBloomRedis Labs官方维护的模块,可直接使用预集成该模块的Docker镜像: ```bash docker run -d -p 6379:6379 redislabs/rebloom ``` 此命令会启动包含RedisBloom模块的Redis实例[^1][^3]。 #### 方法2:自定义Dockerfile安装 若需与其他模块组合使用,可创建自定义镜像: ```Dockerfile FROM redis:latest RUN apt-get update && apt-get install -y git build-essential RUN git clone --recursive https://github.com/RedisBloom/RedisBloom.git \ && cd RedisBloom \ && make CMD ["redis-server", "--loadmodule", "/RedisBloom/redisbloom.so"] ``` 构建并运行: ```bash docker build -t redis-with-bloom . docker run -p 6379:6379 redis-with-bloom ``` #### 验证安装 ```bash docker exec -it <容器ID> redis-cli 127.0.0.1:6379> BF.ADD myfilter item1 (integer) 1 ``` #### 通过docker-compose部署 创建`docker-compose.yml`: ```yaml version: '3' services: redisbloom: image: redislabs/rebloom ports: - "6379:6379" ``` 运行`docker-compose up -d`[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值