欢迎光临殡葬白事网
详情描述

1. 创建网络和目录

# 创建自定义网络
docker network create redis-net

# 创建数据目录
mkdir -p ./redis/{master,slave1,slave2}

2. 启动主节点 (Master)

# 创建主节点配置文件
cat > ./redis/master/redis.conf << EOF
port 6379
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
EOF

# 启动主节点
docker run -d \
  --name redis-master \
  --network redis-net \
  -p 6379:6379 \
  -v $(pwd)/redis/master/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/master/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf

3. 启动从节点 (Slave)

从节点1:

cat > ./redis/slave1/redis.conf << EOF
port 6380
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
replicaof redis-master 6379
EOF

docker run -d \
  --name redis-slave1 \
  --network redis-net \
  -p 6380:6380 \
  -v $(pwd)/redis/slave1/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/slave1/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf \
  --port 6380

从节点2:

cat > ./redis/slave2/redis.conf << EOF
port 6381
bind 0.0.0.0
protected-mode no
appendonly yes
requirepass 123456
masterauth 123456
replicaof redis-master 6379
EOF

docker run -d \
  --name redis-slave2 \
  --network redis-net \
  -p 6381:6381 \
  -v $(pwd)/redis/slave2/redis.conf:/usr/local/etc/redis/redis.conf \
  -v $(pwd)/redis/slave2/data:/data \
  redis:7-alpine \
  redis-server /usr/local/etc/redis/redis.conf \
  --port 6381

4. 使用 Docker Compose 部署(推荐)

创建 docker-compose.yml

version: '3.8'

services:
  master:
    image: redis:7-alpine
    container_name: redis-master
    ports:
      - "6379:6379"
    volumes:
      - ./redis/master/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/master/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf
    networks:
      - redis-net

  slave1:
    image: redis:7-alpine
    container_name: redis-slave1
    ports:
      - "6380:6380"
    volumes:
      - ./redis/slave1/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/slave1/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf --port 6380
    depends_on:
      - master
    networks:
      - redis-net

  slave2:
    image: redis:7-alpine
    container_name: redis-slave2
    ports:
      - "6381:6381"
    volumes:
      - ./redis/slave2/redis.conf:/usr/local/etc/redis/redis.conf
      - ./redis/slave2/data:/data
    command: redis-server /usr/local/etc/redis/redis.conf --port 6381
    depends_on:
      - master
    networks:
      - redis-net

networks:
  redis-net:
    driver: bridge

启动服务:

docker-compose up -d

5. 验证主从复制

# 连接到主节点
docker exec -it redis-master redis-cli -a 123456

# 在主节点执行
127.0.0.1:6379> INFO replication
# 查看 role:master 和 connected_slaves:2

# 测试数据同步
127.0.0.1:6379> SET test-key "Hello Replication"
127.0.0.1:6379> GET test-key

# 连接到从节点验证
docker exec -it redis-slave1 redis-cli -a 123456 -p 6380
127.0.0.1:6380> GET test-key

6. 故障转移测试

模拟主节点故障:

# 停止主节点
docker stop redis-master

# 手动提升从节点为主节点
docker exec -it redis-slave1 redis-cli -a 123456 -p 6380
127.0.0.1:6380> SLAVEOF NO ONE
127.0.0.1:6380> CONFIG SET requirepass 123456

# 配置另一个从节点连接到新的主节点
docker exec -it redis-slave2 redis-cli -a 123456 -p 6381
127.0.0.1:6381> SLAVEOF redis-slave1 6380

7. 常用命令

# 查看容器状态
docker ps

# 查看日志
docker logs redis-master
docker logs redis-slave1

# 停止所有服务
docker stop redis-master redis-slave1 redis-slave2
# 或使用 docker-compose
docker-compose down

# 清理数据
docker-compose down -v

8. 配置说明

  • requirepass:Redis 认证密码
  • masterauth:从节点连接主节点时的认证密码
  • replicaof:指定主节点地址(Redis 5.0+)
  • appendonly yes:启用 AOF 持久化
  • protected-mode no:允许远程连接

这样就完成了 Redis 主从复制的 Docker 部署。可以根据需要调整配置参数,如持久化策略、内存限制等。

相关帖子
参与了几次好评返现,会不会被平台标记成低质评价账号?
参与了几次好评返现,会不会被平台标记成低质评价账号?
滨州市白事灵棚#殡葬服务公司办理,安全可靠
滨州市白事灵棚#殡葬服务公司办理,安全可靠
环保理念深入宠物经济后,2026年哪些可降解或循环材质的宠物用品可能成为主流?
环保理念深入宠物经济后,2026年哪些可降解或循环材质的宠物用品可能成为主流?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
日常饮用水选择有讲究,纯净水、矿泉水和白开水哪种更好?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
历史补贴领取记录可以通过哪些官方途径进行查询与验证?
午休躺睡是否真的有助于缓解久坐带来的腰部与颈部肌肉紧张问题?
午休躺睡是否真的有助于缓解久坐带来的腰部与颈部肌肉紧张问题?
社保卡挂失后又被意外找回,原来的卡片是否还能恢复正常使用?
社保卡挂失后又被意外找回,原来的卡片是否还能恢复正常使用?
成都市殡葬灵棚布置#丧葬一条龙价格,是您的放心选择
成都市殡葬灵棚布置#丧葬一条龙价格,是您的放心选择
多件黄金合并抵押贷款知识,解读组合抵押核算规则与额度上限
多件黄金合并抵押贷款知识,解读组合抵押核算规则与额度上限
墨汁开封后容易发臭结皮,日常保存和调墨时有没有简单办法延长可用期?
墨汁开封后容易发臭结皮,日常保存和调墨时有没有简单办法延长可用期?
潍坊市殡葬礼仪服务%丧事咨询,白事丧事服务
潍坊市殡葬礼仪服务%丧事咨询,白事丧事服务
如何帮助孩子,特别是低年级学生,建立有价值的课间15分钟活动习惯?
如何帮助孩子,特别是低年级学生,建立有价值的课间15分钟活动习惯?
衡阳市白事殡葬一条龙服务%丧葬仪式,办理丧葬服务
衡阳市白事殡葬一条龙服务%丧葬仪式,办理丧葬服务
孝感市殡葬告别会#丧葬一条龙服务办理,全城服务
孝感市殡葬告别会#丧葬一条龙服务办理,全城服务
与客户或平台发生服务纠纷时,零工工作者可以通过哪些便捷途径寻求解决?
与客户或平台发生服务纠纷时,零工工作者可以通过哪些便捷途径寻求解决?
婚丧假最早来源于什么时代背景,为什么传统表述会给
婚丧假最早来源于什么时代背景,为什么传统表述会给"一至三天"这种弹性区间?
包头市正规殡葬服务公司%白事仪式,白事丧事服务
包头市正规殡葬服务公司%白事仪式,白事丧事服务
成分表里如果出现
成分表里如果出现"硫酸镁""氯化钾"字样,是不是说明这瓶水是人工加矿物质的?
洛阳市殡葬礼仪服务公司%白事告别会,丧葬一条龙服务
洛阳市殡葬礼仪服务公司%白事告别会,丧葬一条龙服务