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

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值