基本安装
安装之前检查本机是否已安装gcc
库;gcc
库安装命令如下:
yum -y install gcc
下载所需版本安装包
使用wget
命令在线下载,或上传已下载的安装包
wget http://download.redis.io/releases/redis-5.0.5.tar.gz
进行安装
# 1、解压;进入下载的tar.gz包所在的目录下进行解压
tar -zxvf redis-5.0.5.tar.gz
# cd命令进入解压成功的redis-5.0.5目录,紧接着执行make编译命令
cd redis-4.0.11
# 编译执行
make
# =======================
# make install默认情况下,就会把make命令生成在src目录下
#的二进制文件复制一份到/usr/local/bin目录下;又因为
# /usr/local/bin在系统变量 PATH中;所有在任意的目录
# 都可以执行Redis相关的脚本
#=========================
# 但是多数情况下还是习惯将Redis指定到/usr/local/redis下进行安装
make PREFIX=/usr/local/redis install
补充说明:
如上操作中执行完make
命令(不是make install)后,会在src目录
下多出几个可执行的shell脚本;其中就有最常用的redis-server
和redis-cli
;此时这些脚本就可以直接对Redis进行相关的操作... ./redis-server # 启动Redis服务 ... ./redis-cli # 启动Redis客户端 ...
但是每次操作Redis的相关命令都要进入到安装目录下的src目录,这样很繁琐,所以我们可以make之后再执行make install,就会把
make
命令生成在src目录下的所有二进制文件复制一份放到/usr/local/bin
目录下;又因为/usr/local/bin
在系统变量PATH
中;所有在任意的目录都可以执行Redis相关的脚本。# make install 之后就可以在任意的目录下执行Redis的脚 [root@iZ2ze9n36uysr6hcdfql5rZ ~]# redis-server
但是多数情况下,习惯在执行 make install 命令时指定Redis的安装目录,通常安装在 /usr/local/redis 下
Docker安装
拉取镜像
docker pull redis
:拉取最新版本的Redis镜像docker pull redis:6.0.8
:拉取对应版本的Redis镜像
# 拉取最新版的Redis镜像
[root@VM-8-3-opencloudos ~]# docker pull redis
Using default tag: latest
latest: Pulling from library/redis
360eba32fa65: Pull complete
64b323c8825b: Pull complete
383536099eae: Pull complete
e3f0c12dcc8e: Pull complete
2d2142a35b4d: Pull complete
b4cada01e6a7: Pull complete
Digest: sha256:f92a0be0ba8c085e6a5e2d2bea386365443485bcd67ced5ca8ddcdacdd4656d2
Status: Downloaded newer image for redis:latest
docker.io/library/redis:latest
# 查看拉取的Redis镜像信息
[root@VM-8-3-opencloudos ~]# docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
redis latest 39ac5829bade 13 days ago 138MB
宿主机创建redis.conf文件
docker run -v /app/redis/conf/redis.conf:/etc/redis/redis.conf
即数据卷挂载的时候默认创建的是目录;所以在宿主机的/app/redis/conf
目录下提前创建好redis.conf
文件。
启动容器
注意:要清楚的知道-v /app/redis/conf/redis.conf:/etc/redis/redis.conf这一参数进行数据卷的挂载动作时,宿主机上的空白redis.conf文件会完全覆盖掉容器中的redis.conf
docker run -p 6379:6379 \
--privileged=true \
--name myRedis \
-v /app/redis/conf/redis.conf:/etc/redis/redis.conf \
-v /app/redis/data:/data \
-d 39ac5829bade \
redis-server /etc/redis/redis.conf
docker run -p 6379:6379
:容器中的6379映射到宿主机的6379端口;
--privileged=true
:使用该参数,container内的root拥有真正的root权限
--name
:给容器起的名字
-v /app/redis/redis.conf:/etc/redis/redis.conf
:数据卷映射,容器中/etc/redis/redis.conf文件映射到宿主机的/app/redis/redis.conf
-v /app/redis/data:/data
:还是数据卷映射,容器中的/data目录挂载给了宿主机的/app/redis/data
-d imageID
:-d就是后台启动,使用镜像的ID和名称都是可以的
接着最后就是启动参数(如果还记得之前常用的/bin/bash,就不难理解了):redis-server /etc/redis/redis.conf
:docker run 最后是可以跟上容器中的相关指令,之前经常使用docker run -it imageID /bin/bash
使容器的交互界面不至于闪退;现在它同样是容器中的某条具体命令,意在让redis不是无配置启动,而是按照这个redis.conf的配置启动
进入容器验证容器内的redis.conf文件内容确实为空白,已被完全覆盖
# 进入容器内部
[root@VM-8-3-opencloudos conf]# docker exec -it 71d8 /bin/bash
这种情况,就要求已备份redis.conf
;备份的思路:前期使用docker run
命令时不进行数据卷的挂载(不指定-v
)正常启动以后,使用docker cp
命令复制一份容器内的redis.conf文件到宿主机的目标路径下。最后删除当前容器,使用上面完整的命令根据镜像重新创建新的容器
至此,Docker安装Redis就结束了,下面是某些使用小案例
docker exec 连接redis客户端
[root@VM-8-3-opencloudos /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3dee1db74319 39ac5829bade "docker-entrypoint.s…" 23 minutes ago Up 23 minutes 6379/tcp, 0.0.0.0:6379->6379/tcp myRedis
[root@VM-8-3-opencloudos /]# docker exec -it 3dee1db74319 redis-cli
127.0.0.1:6379>
设置密码后,再次连接客户端需要输入密码
因为之前docker run
的时候对redis.conf
文件进行了数据卷的映射,所以直接走宿主机的/app/redis/redis.conf
中进行相关的配置
[root@VM-8-3-opencloudos conf]# cat redis.conf
requirepass Redis@123