一:创建主结点(6380)
# 创建主节点目录
sudo mkdir -p /mydata/redis-master/{data,conf}
# 生成主节点配置
sudo tee /mydata/redis-master/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6380
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
EOF
# 启动主节点容器
docker run -d \
--name redis-master \
-p 6380:6380 \
-v /mydata/redis-master/data:/data \
-v /mydata/redis-master/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--restart=always \
redis:7.0.14-alpine \
redis-server /usr/local/etc/redis/redis.conf
二:创建从结点1(6381)
# 创建从节点1目录
sudo mkdir -p /mydata/redis-slave1/{data,conf}
# 生成从节点1配置(指向主节点)
sudo tee /mydata/redis-slave1/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6381
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# 主从复制配置(重要!)替换为你的主redis所在ip
replicaof 192.168.80.56 6380
EOF
# 启动从节点1容器
docker run -d \
--name redis-slave1 \
-p 6381:6381 \
-v /mydata/redis-slave1/data:/data \
-v /mydata/redis-slave1/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--restart=always \
redis:7.0.14-alpine \
redis-server /usr/local/etc/redis/redis.conf
三:创建从结点2(6382)
# 创建从节点2目录
sudo mkdir -p /mydata/redis-slave2/{data,conf}
# 生成从节点2配置(指向主节点)
sudo tee /mydata/redis-slave2/conf/redis.conf << 'EOF'
bind 0.0.0.0
protected-mode no
port 6382
daemonize no
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data
# 主从复制配置(重要!)替换为你的主redis所在ip
replicaof 192.168.80.56 6380
EOF
# 启动从节点2容器
docker run -d \
--name redis-slave2 \
-p 6382:6382 \
-v /mydata/redis-slave2/data:/data \
-v /mydata/redis-slave2/conf/redis.conf:/usr/local/etc/redis/redis.conf \
--restart=always \
redis:7.0.14-alpine \
redis-server /usr/local/etc/redis/redis.conf
补充说明:如果需要更多的从redis,按照改方式继续创建
四:测试
1.测试一
# 查看主节点复制信息
docker exec redis-master redis-cli -p 6380 info replication | grep role
预期输出:
![]()
2.测试二
# 查看从节点同步状态
docker exec redis-slave1 redis-cli -p 6381 info replication | grep -E "role|master"
预期输出:

3.测试主从同步
进入主redis:
# 连接到主节点(指定端口6380)
docker exec -it redis-master redis-cli -p 6380
#在主redis中写入
set test xnm
进入从1号redis
# 连接到从节点1(指定端口6381)
docker exec -it redis-slave1 redis-cli -p 6381
#在从1号redis读取
get test #输出xnm
#.....更多操作......

5万+

被折叠的 条评论
为什么被折叠?



