前言
在项目中,一般普遍都会用到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
标签:容器,配置文件,Redis,redis,布隆,Linux,过滤器,Docker,docker
From: https://blog.csdn.net/Tomkruse11/article/details/140431484