09.Redis主从复制

本文详细介绍了Redis的主从复制,包括主从架构概述、搭建步骤和复制原理。在主从架构中,主Redis负责读写,从Redis仅读。搭建过程涉及配置文件修改及端口设置。主从复制分为全量复制和部分复制,全量复制通过rdb快照和缓冲区确保数据传输,部分复制则根据断开连接后的数据差异决定同步方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Redis主从架构

在这里插入图片描述

主从架构概述

从redis向主redis拷贝数据做备份,从redis不能写数据,只能读数据。主redis可读可写,如果主redis服务挂了,从redis不会自动选举出主reids,需要手动指定(修改配置文件)哪个从redis变为主redis,整个服务才能继续可用。

主从架构的搭建

  1. 在redis主目录下创建conf,data两个文件夹
    在这里插入图片描述
  2. 复制一份redis.conf文件到config文件夹
    cp redis.conf ./config/redis_6380.conf
  3. 修改相关配置如下
port 6380
pidfile /var/run/redis_6380.pid
logfile "6380.log"
dir /usr/local/redis-5.0.2/data/6380
#配置主从复制 从本机6379的redis实例复制数据 
replicaof 192.168.20.135 6379
#从redis只读 
replica‐read‐only yes
  1. 再拷贝一份redis_6381.conf 配置与上面相同,将端口号改为6381.
  2. 使用redis-server客户端启动三个服务
#开启端口6379的redis
./redis-server ../redis.conf &
#开启端口号为6380的redis
./redis-server ../config/redis_6380.conf &
#开启端口号为6381的redis:
./redis-server ../config/redis_6381.conf &

并使用redis-cli客户端连接三个服务(开三个会话窗口):
窗口1

./redis-cli

在这里插入图片描述
在这里插入图片描述
角色是master
窗口2:

./redis-cli -p 6380

在这里插入图片描述
在这里插入图片描述
角色是slave.
窗口3:

./redis-cli -p 6381

在这里插入图片描述
在这里插入图片描述
角色是slave。


从redis无法设置与修改数据:
在这里插入图片描述
主redis设置数据:

在这里插入图片描述
从redis获取数据:
在这里插入图片描述
在这里插入图片描述

主从复制原理

全量复制

在这里插入图片描述

  1. salve与master建立长连接,slave发送psnyc命令,请求同步数据。
  2. master收到命令后,执行bgsave命令生成最新的rdb快照,发送给slave.
  3. 为了防止在rdb快照生成过程中有新的数据写入,导致slave拷贝的数据不全,master有一块名叫repl_back_buffer的缓冲区保存最近的更新指令。rdb快照发送完后,也会把缓冲区的数据也发送给slave。
  4. slave将拿到的rdb快照与buffer数据合并成完整的rdb快照,再加载进内存
  5. master通过socket长连接持续把写命令发送给从slave,保证主从数据一致性

部分复制

从2.8版本开始,slave与master能够在网络连接断开重连后只进行部分数据复制。
在这里插入图片描述

  1. slave与master断开连接后,重新与master建立连接,slave发送psync命令请求同步数据,并附带一个slave当前已有数据的一个偏移量offset.
  2. master中名为repl_back_buffer的缓冲区会缓存最近一段时间的数据,master接收到offset,能够判断出slave的数据状况,如果offset偏移量存在缓冲区的数据中,则master会将缓冲区中offset偏移量之后的数据一次性同步给slave节点。
  3. 如果offset偏移量不存在master的缓冲区中,表明slave中的数据与master中数据相差太大,会进行一次全量复制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值