redis 6.0.x
Redis 6是Redis 有史以来最大的一个版本:
- 对客户端缓存某方面的功能进行了重新设计,主要是放弃了“缓存插槽”(caching slot)改为使用键名(key name)。另外还新增了“广播模式”(broadcasting mode),当使用广播模式时,服务器不需要记住每个客户端请求的 key。相反,客户端会订阅 key 的前缀:每当有匹配前缀的 key 被修改时,客户端就会收到通知。
- 用于主从复制的 RDB 文件如果不再使用会被删除
- 新的 ACL LOG 命令,可查看不遵循 ACL 权限的客户端(例如访问了无权限的命令和 key,以及验证失败),主要用于调试 ACL 问题。此外还有重新实现的 ACL GENPASS,它使用了基于 SHA256 的 HMAC 加密算法。
- 改进 PSYNC2 主从复制协议
- 改进 Redis 命令行的超时选项
- 提升 RDB 文件的加载速度(~20/30% 的提升)
- 新的 STRALGO 命令,实现了复杂的字符串算法。这是一个重要的算法,非常非常牛逼。
更多细节可以去看官方: https://redis.io/documentation
上指令:
先看看 docker 上redis版本, 挑 STARS 最多的下载就对了。
[root@localhost conf]# docker search redis
当然也可以指定版本, 我以 6.0.9版本为例 , 因为我是已经下载过了,所以显示有点不一样, 反正你下载成功了就行。
[root@localhost conf]# docker pull redis:6.0.9
docker images 查看一下:
[root@localhost conf]# docker images
接下来, 你需要去官网下载一个 6.X版本的配置文件,我是直接在官网下载了个压缩包
解压拿到里面的redis.conf 文件
上传到你的 linux机器上
在 /opt/目录下创建三个文件夹:
mkdir /opt/docker_redis
mkdir /opt/docker_redis/conf
mkdir /opt/docker_redis/data
将刚才拿到reids.conf文件 上传到 /opt/docker_redis/conf 目录下,
接了下来 按docker官方提供的脚本,创建Dockerfile文件
[root@localhost conf]# vi Dockerfile
把官方https://hub.docker.com/_/redis?tab=description&page=1&ordering=last_updated的代码贴上去就行;
Dockerfile
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
然后 esc , :wq! 保存一下。
此时, conf 目录下有两个文件了。
修改 redis.conf 文件,三个地方:
(1)注释掉bind 127.0.0.1(外网访问 ,默认好像就是注释掉的)
(2)修改protected-mode yes->no(关闭保护模式,允许外网访问)
(3)添加requirepass 12345678(设置密码)
修改完之后, 保存,退出 redis.conf 文件, 接下来开始build镜像
在conf目录下执行:
[root@localhost conf]# docker build -t myredis-c .
参数解释:
myredis-c 表示自己镜像的名称, 后续通过这个镜像 run出来docker实例 。
. 点表示当前目录执行 build指令(不熟悉Dockerfile的同学可以去百度)
docker image 查看到, 刚刚制作成功了
现在可以开始run 了,指定config 和data的挂载目录
docker run -dit -p 6379:6379 -v /opt/docker_redis/data:/data -v /opt/docker_redis/conf:/usr/local/etc/redis --name redis-1 myredis-c redis-server /usr/local/etc/redis/redis.conf
-dit 是docker run 带日志方便通过 docker logs 查看启动日志, d代表后台启动
-p 6379:6379 映射端口
-v /opt/docker_redis/data:/data # 指定第一个挂载目录 data
-v /opt/docker_redis/conf:/usr/local/etc/redis # 指定第二个挂载目录 redis.conf 所在的目录
–name redis-1 # 给自己的容器起个名字
myredis-c # 刚刚自己制作的那个镜像
redis-server /usr/local/etc/redis/redis.conf #指定 redis-server 启动所加载的配置文件
好了,到此结束,应该可能看到你的 redis 容器实例已经启动起来了。
验证一下:
[root@localhost conf]# docker run -it myredis:1.0 redis-cli -h 172.17.0.4
172.17.0.4:6379> auth **你的密码**
OK
172.17.0.4:6379>
参数解释:
myredis:1.0 : 是我的images 镜像名称和版本,我是基于myredis:1.0镜像 创建的 实例redis-1
-h 172.17.0.4 : 是我的镜像实例redis-1 的容器IP地址 ,可以通过指令 docker inspect redis-1查看
使用set 、get指令测试一下:
没问题,证明一切正常。