用docker实现Redis主从配置的示例代码

 更新时间:2025年09月25日 10:04:39   作者:Henry_Wu001  
在三台服务器上用Docker部署Redis主从模式:Server1作为主节点,Server2和Server3配置为从节点并连接主节点,通过环境变量指定主IP,验证复制状态以确保高可用性

初始条件

在三台不同服务器上使用 Docker 部署 Redis 主从模式,通常有以下步骤。
假设你有三台服务器,分别为 server1、server2 和 server3,我们将在这些服务器上设置 Redis 的主从复制。

步骤

准备 Redis 配置文件:每台服务器上的 Redis 实例需要配置主从关系。
在三台服务器上启动 Docker 容器:在每台服务器上分别启动 Redis 容器,其中两台作为从节点,一台作为主节点。
配置主从复制:在从节点上配置连接到主节点。

步骤 1:准备 Docker 环境

在每台服务器上安装 Docker,并确保它们能够相互通信。如果你使用 Docker Compose,也可以通过配置 docker-compose.yml 文件来简化配置。

步骤 2:启动 Redis 容器

你需要在三台服务器上启动 Redis 容器。以下是如何在每台服务器上启动 Redis 实例的步骤。

  1. 启动主节点(Server1)
    在 server1 上启动主节点 Redis:
docker run -d \
  --name redis-master \
  --restart always \
  -p 6379:6379 \
  redis:latest

此命令会启动一个 Redis 容器并将其设置为主节点。6379 是 Redis 的默认端口。

  1. 启动从节点(Server2)
    在 server2 上启动一个从节点 Redis,并连接到 server1 上的主节点:
docker run -d \
  --name redis-slave1 \
  --restart always \
  -e REDIS_REPLICATION_MODE=slave \
  -e REDIS_MASTER_HOST=<server1_ip> \
  -e REDIS_MASTER_PORT=6379 \
  -p 6380:6379 \
  redis:latest

这里,<server1_ip> 是 server1 的 IP 地址,redis-slave1 是从节点的名称。通过环境变量来指定从节点连接到主节点。

  1. 启动从节点(Server3)
    在 server3 上启动另一个从节点 Redis,并连接到 server1 上的主节点:
docker run -d \
  --name redis-slave2 \
  --restart always \
  -e REDIS_REPLICATION_MODE=slave \
  -e REDIS_MASTER_HOST=<server1_ip> \
  -e REDIS_MASTER_PORT=6379 \
  -p 6381:6379 \
  redis:latest

同样,替换 <server1_ip> 为主节点的 IP 地址。

步骤 3:配置主从复制
Redis 会自动通过容器的环境变量配置主从关系,但是你可以通过连接到从节点并手动配置主从关系来确保一切正常。

  1. 进入从节点容器并配置主从关系
docker exec -it redis-slave1 redis-cli

连接到从节点后,执行以下命令以确保它正确地配置了主从复制:

SLAVEOF <server1_ip> 6379

同样,在 redis-slave2 上执行相同的操作:

docker exec -it redis-slave2 redis-cli
SLAVEOF <server1_ip> 6379

步骤 4:验证主从复制是否成功
你可以使用以下命令来检查主从关系是否正常工作:

连接到主节点(server1):

docker exec -it redis-master redis-cli

在主节点上执行命令查看从节点:

INFO replication

你应该能看到类似以下的输出,显示从节点已连接:

localhost:6379[1]> INFO replication

# Replication
role:master
connected_slaves:2
slave0:ip=172.16.100.121,port=6379,state=online,offset=7873245,lag=0
slave1:ip=172.16.100.122,port=6379,state=online,offset=7793351,lag=1
master_failover_state:no-failover
master_replid:0ab711eb4e43cf51c349e232042f3ef01b009c72
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:7874805
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:6826230
repl_backlog_histlen:1048576

连接到从节点(server2 或 server3):

docker exec -it redis-slave1 redis-cli

在从节点上执行命令查看主节点信息:

INFO replication

输出应显示从节点已正确连接到主节点,如下所示:

# Replication
role:slave
master_host:172.16.100.102
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_read_repl_offset:48479646
slave_repl_offset:48479646
slave_priority:100
slave_read_only:1
replica_announced:1
connected_slaves:0
master_failover_state:no-failover
master_replid:0ab711eb4e43cf51c349e232042f3ef01b009c72
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:48479646
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:47431071
repl_backlog_histlen:1048576

步骤 5:持久化配置(可选)
为了确保 Redis 数据在重启后依然有效,你可以为 Redis 配置持久化机制。可以通过修改 Redis 配置文件或使用 Docker 挂载数据卷来实现。

docker run -d \
  --name redis-master \
  --restart always \
  -v /path/to/data:/data \
  -p 6379:6379 \
  redis:latest

这样,Redis 数据将保存在本地磁盘,而不是容器的默认文件系统中。

总结

主节点:在 server1 上启动一个 Redis 实例。
从节点:在 server2 和 server3 上启动两个 Redis 从节点,并将它们配置为从属于 server1。
验证复制:通过 INFO replication 命令验证主从关系是否正确。
通过这种方式,你可以在三台服务器上使用 Docker 部署一个高可用的 Redis 主从模式。

到此这篇关于用docker实现Redis主从配置的示例代码的文章就介绍到这了,更多相关docker Redis主从配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker安装部署Redis数据库的实现步骤

    Docker安装部署Redis数据库的实现步骤

    本文主要介绍了Docker安装部署Redis数据库的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-02-02
  • 使用docker指令如何删除所有不再使用的镜像

    使用docker指令如何删除所有不再使用的镜像

    这篇文章主要介绍了使用docker指令如何删除所有不再使用的镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • Docker rocketmq部署的实现示例

    Docker rocketmq部署的实现示例

    最近学习使用 rocketmq,需要搭建 rocketmq 服务端,本文主要记录 rocketmq 搭建过程以及这个过程踩到的一些坑,感兴趣的可以了解一下
    2021-12-12
  • docker update 命令与环境变量管理方法

    docker update 命令与环境变量管理方法

    本文介绍Docker中dockerupdate命令用于动态调整运行中容器的配置,如资源限制、重启策略等,但部分需重启生效,环境变量在启动时设置,无法动态修改,建议通过挂载文件或Docker Compose管理,感兴趣的朋友跟随小编一起看看吧
    2025-07-07
  • docker 跨平台构建镜像的示例详解

    docker 跨平台构建镜像的示例详解

    这篇文章主要介绍了docker跨平台构建镜像的案例,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • docker swarm外部验证负载均衡时不生效的解决方案

    docker swarm外部验证负载均衡时不生效的解决方案

    这篇文章主要介绍了docker swarm外部验证负载均衡时不生效的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-04-04
  • 详解使用docker 1.12 搭建多主机docker swarm集群

    详解使用docker 1.12 搭建多主机docker swarm集群

    本篇文章主要介绍了使用docker 1.12 搭建多主机docker swarm集群,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • Jenkins整合Docker实现CICD自动化部署的详细过程(若依项目)

    Jenkins整合Docker实现CICD自动化部署的详细过程(若依项目)

    本文介绍了如何使用Jenkins和Docker实现CI/CD自动化部署,文章介绍了环境准备,包括Jenkins、Docker、JDK、Node和Maven,然后讨论了如何配置GitLab环境并利用Webhooks实现代码的自动拉取和部署,最后,展示了如何部署前后端分离的项目,并通过实际操作验证了整个流程的有效性
    2024-10-10
  • 利用Docker-compose安装redis的简单步骤

    利用Docker-compose安装redis的简单步骤

    Docker-compose是Docker官方推出的一个工具软件,可以管理多个Docker容器组成的一个应用,下面这篇文章主要给大家介绍了关于利用Docker-compose安装redis的简单步骤,需要的朋友可以参考下
    2024-03-03
  • 使用Docker部署OpenClaw的完整流程

    使用Docker部署OpenClaw的完整流程

    本文详细介绍了从源码编译到Docker容器化部署OpenClaw的过程,包括编译打包、启动容器、配置Token以及迁移部署的步骤和注意事项,需要的朋友可以参考下
    2026-03-03

最新评论