Redis-主从复制一主多从

Redis主从复制简介


主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(Master),后 者称为从节点(Slave);数据的复制是单向的,只能由主节点到从节点。

默认情况下,每台Redis服务器都是主节点;且一个主节点可以有多个从节点(或没有从节点),但一个从 节点只能有一个主节点。

Master以写为主,Slave以读为主。

在这里插入图片描述

主从复制的作用:

  1. 数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。
  2. 故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服 务的冗余。
  3. 负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务 (即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;尤其是 在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。
  4. 高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是 Redis高可用的基础。

一般来说,要将Redis运用于工程项目中,不会只有一台Redis,原因如下:

  1. 从结构上,单个redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
  2. 从容量上,单个redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有 内存用做Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。

Redis主从复制一主多从

使用 Docker 安装 Redis 主从复制可按以下步骤操作: ### 1. 启动 Redis 容器 首先启动Redis 容器,以创建主从复制所需的环境。例如,创建三个 Redis 容器: ```bash docker run --name redis-6379 -p 6379:6379 -d redis:3.2 redis-server docker run --name redis-6380 -p 6380:6379 -d redis:3.2 redis-server docker run --name redis-6381 -p 6381:6379 -d redis:3.2 redis-server ``` 此时已经创建好了三个基本容器,容器的名称分别是:redis-6379、redis-6380、redis-6381 [^2]。 ### 2. 配置 Redis 从关系 需要在从节点的配置中指定节点的信息。在 Redis 配置文件里添加或修改 `replicaof` 配置项,格式为 `replicaof <master-ip> <master-port>`。例如: ```plaintext replicaof 192.168.2.175 6379 ``` 此处的 IP 应是机的 IP,端口也应该是机的端口 [^3]。 ### 3. 重启 Redis 容器 添加或修改完成配置之后,需要重启 Redis 的 Docker 容器,使配置生效。示例如下: ```bash # 假设容器名是 redis-server-02 和 redis-server-03 docker restart redis-server-02 docker restart redis-server-03 ``` 如果使用上面创建的容器名,相应的重启命令为: ```bash docker restart redis-6380 docker restart redis-6381 ``` ### 4. 验证主从复制 可通过客户端工具连接到 Redis 从节点,使用 `info replication` 命令查看复制信息,确认主从复制是否配置成功。 ### 完整示例 以下是个更完整的启动 Redis 容器并挂载配置文件的示例,用于启动节点和两个从节点: #### 节点 ```bash docker run -p 6379:6379 --name redis-master \ -v /mydata/redis/data:/data \ -v /mydata/redis/conf/redis-master.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf ``` #### 从节点 1 ```bash docker run -p 6380:6379 --name redis-slave1 \ -v /mydata/redis/data-slave1:/data \ -v /mydata/redis/conf/redis-slave1.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf ``` 在 `redis-slave1.conf` 中添加 `replicaof <master-ip> 6379`。 #### 从节点 2 ```bash docker run -p 6381:6379 --name redis-slave2 \ -v /mydata/redis/data-slave2:/data \ -v /mydata/redis/conf/redis-slave2.conf:/etc/redis/redis.conf \ -d redis redis-server /etc/redis/redis.conf ``` 在 `redis-slave2.conf` 中添加 `replicaof <master-ip> 6379`。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blue刂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值