用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主从配置内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Mac OS如何添加docker环境变量

    Mac OS如何添加docker环境变量

    安装Docker Desktop后需手动将CLI路径添加至/etc/paths.d文件,以恢复命令行工具,通过创建对应文件并设置路径,重启终端后环境变量生效,即可正常使用Docker CLI
    2025-07-07
  • Linux下docker安装mysql8并配置远程连接

    Linux下docker安装mysql8并配置远程连接

    本文主要介绍了Linux下docker安装mysql8并配置远程连接,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • 在docker中配置Oracle11g的过程

    在docker中配置Oracle11g的过程

    这篇文章主要介绍了在docker中配置Oracle11g ,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • CentOS8下的Docker使用详解

    CentOS8下的Docker使用详解

    这篇文章主要介绍了CentOS8下的Docker使用,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • docker安装nginx并部署前端项目的全过程

    docker安装nginx并部署前端项目的全过程

    作为一个前端,代码写完,最后部署到服务器,这是一个必须要了解的过程,这篇文章主要给大家介绍了关于docker安装nginx并部署前端项目的相关资料,需要的朋友可以参考下
    2022-05-05
  • Docker自定义JDK镜像并拉取至阿里云镜像仓库超详细攻略

    Docker自定义JDK镜像并拉取至阿里云镜像仓库超详细攻略

    Docker仓库是集中存放镜像的地方,分为公共仓库和私有仓库,这篇文章主要给大家介绍了关于Docker自定义JDK镜像并拉取至阿里云镜像仓库的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-08-08
  • Docker 设置代理的三种方法(2025年06月03日亲测可用)

    Docker 设置代理的三种方法(2025年06月03日亲测可用)

    在Docker中设置代理是非常常见的需求,本文将介绍三种配置Docker使用代理的常见方法,包括通过配置镜像加速器、通过配置HTTP/HTTPS代理及通过配置代理,感兴趣的可以了解一下
    2025-09-09
  • Docker Desktop如何设置镜像环境变量

    Docker Desktop如何设置镜像环境变量

    Docker Desktop配置镜像环境变量需设置容器名称、端口映射、卷和环境变量,如PostgreSQL需指定POSTGRES_PASSWORD,建议按需配置,以确保数据持久化和参数传递
    2025-07-07
  • k8s手动拉取docker镜像的方法示例

    k8s手动拉取docker镜像的方法示例

    docker是一种便捷的容器化解决方案,它可以通过拉取镜像的方式轻松地部署和管理应用程序,本文主要介绍了k8s手动拉取docker镜像的方法示例,感兴趣的可以了解一下
    2024-02-02
  • Next.js Docker镜像私有部署从零实现

    Next.js Docker镜像私有部署从零实现

    这篇文章主要为大家介绍了Next.js Docker镜像私有部署从零实现,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12

最新评论