2025年最新Linux的Redis主从集群搭建

一:概述

        Redis(Remote Dictionary Server)是一个开源的、高性能的键值存储系统,通常被用作数据库、缓存或消息中间件。它以内存存储为主,支持多种数据结构,并具备持久化、高可用、分布式等特性,广泛应用于互联网、游戏、金融等场景。在开发应用时我们经常使用的是单节点的Redis,但是在实际企业应用中,为了提高Redis的并发性能,就需要搭建Redis主从集群。下面我就来简单的说明一下利用Docker搭建一个简单的主从集群。

二:Redis主从集群的搭建(前置的Docker默认已经安装完)

        <1>利用Docker拉取最新的Redis镜像

docker pull redis

默认拉取的是最新的Redis镜像版本。

        <2>在你经常安装应用的目录中新建文件夹redis

mkdir redis

       <3>在该目录中新建一个compose的文件

touch docker-compose.yaml

        <3>编辑上述创建的文件,并添加如下的内容

vim docker-compose.yaml
version: "3.2"

services:
  r1:
    image: redis # 镜像文件
    container_name: r1 # 容器名称
    network_mode: "host" # 主机模式
    entrypoint: ["redis-server", "--port", "7001"] # Redis服务运行端口号
  r2:
    image: redis
    container_name: r2
    network_mode: "host"
    entrypoint: ["redis-server", "--port", "7002"]
  r3:
    image: redis
    container_name: r3
    network_mode: "host"
    entrypoint: ["redis-server", "--port", "7003"]

        <4>在当前目录下运行以下的命令

docker-compose up -d

出现这种就说明已经部署了基本的Redis多实例节点成功了。

        <5>建立集群

        上述虽然搭建了3个Redis的实例,但是并没有形成主从关系,需要通过以下的命令来配置主从关系。

# Redis5.0以前
slaveof <masterip> <masterport>
# Redis5.0以后
replicaof <masterip> <masterport>

        这里用临时模式测试,首先连接r2,让其以r1为主节点

# 连接r2
docker exec -it r2 redis-cli -p 7002
# 认r1主,也就是7001
slaveof host(主机ip地址) 7001

然后连接r3,让其以r1为master

# 连接r2
docker exec -it r3 redis-cli -p 7002
# 认r1主,也就是7001
slaveof host(主机ip地址) 7001

然后连接r1,查看集群状态:

# 连接r1
docker exec -it r1 redis-cli -p 7001
# 查看集群状态
info replication

        会看到如下的信息:

# Replication
role:master
connected_slaves:2
slave0:ip=host,port=7002,state=online,offset=154,lag=1
slave1:ip=host,port=7003,state=online,offset=154,lag=0
master_failover_state:no-failover
master_replid:6fac952687625ccf5697afb2770f3254f545f12c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:154
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:154

可以看到它扮演的角色是主节点。

三:测试主从集群效果

        分别在集群中执行一系列的读写操作,然后查看效果

root@1:/usr/local/soft/redis# docker exec -it r1 redis-cli -p 7001
127.0.0.1:7001> set string 五一劳动节
OK
127.0.0.1:7001> set num 501
OK
127.0.0.1:7001> get num
"501"
127.0.0.1:7001> get string
"\xe4\xba\x94\xe4\xb8\x80\xe5\x8a\xb3\xe5\x8a\xa8\xe8\x8a\x82"
127.0.0.1:7001> exit
root@1:/usr/local/soft/redis# docker exec -it r2 redis-cli -p 7002
127.0.0.1:7002> set num 1234
(error) READONLY You can't write against a read only replica.
127.0.0.1:7002> get num
"501"
127.0.0.1:7002> get string
"\xe4\xba\x94\xe4\xb8\x80\xe5\x8a\xb3\xe5\x8a\xa8\xe8\x8a\x82"

 从这里发现主节点可以进行读写操作,而从节点只可以读取不能写入。至此为止,这个主从集群搭建就完毕了。

### 如何搭建配置 Redis 主从复制集群 #### 配置环境准备 为了确保主从复制能够正常工作,需要先准备好运行环境。如果本地已安装了 Redis,则需拷贝 Redis 的配置文件至指定位置[^3]。 ```bash echo 6001 6002 6003 | xargs -t -n 1 cp /usr/local/etc/redis.conf ``` 此命令会将 `/usr/local/etc/redis.conf` 文件分别拷贝到端口为 `6001`, `6002`, 和 `6003` 对应的目录下,以便后续修改这些副本作为不同实例的基础配置。 #### 修改配置文件 创建三个不同的 Redis 实例来模拟主服务器和两个从服务器的情况。对于每一个实例都需要单独编辑其对应的配置文件: - 将 `port` 参数设置成不同的值(比如分别为 6001, 6002, 6003),以区分各个服务进程; - 设置 `pidfile` 及 `logfile` 使用各自独立的日志记录路径; - 关键在于为主节点设定 `save` 命令保存策略并开启 RDB 功能;而对所有从节点则要添加如下行指明它们所跟随的主机地址与端口号: ```properties slaveof 127.0.0.1 6001 ``` 以上操作通过配置参数方式完成主从关系建立[^2]。 #### 启动多个 Redis 实例 依次启动这三个经过特别配置后的 Redis 进程。可以利用后台执行的方式让程序持续监听各自的端口而不阻塞终端输入输出流。 ```bash redis-server ./6001/redis.conf & redis-server ./6002/redis.conf & redis-server ./6003/redis.conf & ``` 此时应该能看到三台相互关联的服务正在稳定提供访问接口。 #### 测试主从同步效果 借助客户端工具如 Navicat 或者直接采用命令行形式向主节点写入测试数据,并观察其他两处是否能及时接收到相同的信息更新[^5]。 例如,在主节点上执行 SET 操作之后立即切换到任意一个从属设备查询相同的 key 是否存在预期 value 即可验证整个体系结构的有效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值