Redis主从架构的核心原理

Redis主从复制包括全量复制和增量复制,用于数据冗余和故障恢复。全量复制在初始同步或断线重连时发生,增量复制在连接恢复后同步未复制数据。2.8版本后支持断点续传,避免重复全量复制。此外,无磁盘化复制提升效率,而过期key处理由master同步del命令给slave。
摘要由CSDN通过智能技术生成

1.redis主从架构的核心原理

        redis主从架构依赖于主从复制,redis支持主从架构,当我们使用slaveof 命令(slaveof 192.168.0.0.255)对redis服务器进行设置后,即可将一个redis服务器设置为从服务器。从服务器默认为只读模式,不接收写请求,当对从服务器发起写请求时会报错。

        redis主从复制包括依赖于三个机制:全量复制和增量复制两个过程。当服务器初始化启动时,从服务器会主从根据配置的master的ip和端口信息发起socket请求,建立连接。

        1.全量复制(full resynchonization):服务器第一次启动,初始化时执行,master和slave第一次同步数据是全量同步。但要注意,全量复制是指redis的一种复制机制,不是特指redis初始化第一次执行的复制操作,在redis运行过程中也可以执行全量复制,可以通过命令触发。

        2.当一个 master 实例和一个 slave 实例连接正常时, master 会发送一连串的命令流来保持对 slave的更新,以便于将自身数据集的改变复制给 slave :包括客户端的写入、key 的过期或被逐出等等。

        3.增量复制:master在与salve的主从复制过程中,如果因网络等问题导致断开连接,重新连接后会执行增量复制过程,仅复制上次未同步的数据给slave。注意:增量复制是指redis断线重连后执行的操作,不是指redis正常运行中master往slave同步数据的过程。而且增量同步只有redis2.8以后的版本才支持,2.8以前的redis是不支持的,2.8以前的redis如果断线,重连后只会进行全量复制。

2、redis主从复制之全量复制

当启动一个slave node的时候,它会发送一个PSYNC命令给master node

如果这是slave node重新连接master node,那么master node仅仅会复制给slave部分缺少的数据; 否则如果是slave node第一次连接master node,那么会触发一次full resynchronization

开始full resynchronization的时候,master会启动一个后台线程,开始生成一份RDB快照文件,同时还会将从客户端收到的所有写命令缓存在内存中。RDB文件生成完毕之后,master会将这个RDB发送给slave,slave会先写入本地磁盘,然后再从本地磁盘加载到内存中。然后master会将内存中缓存的写命令发送给slave,slave也会同步这些数据。

slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb save操作,用一份数据服务所有slave node。

2、主从复制的断点续传(也叫部分复制)

redis2.8之前是不支持断点续传,

从redis 2.8开始,就支持主从复制的断点续传,如果主从复制过程中,网络连接断掉了,那么可以接着上次复制的地方,继续复制下去,而不是从头开始复制一份

master node会在内存中常见一个backlog,master和slave都会保存一个replica offset还有一个master id,offset就是保存在backlog中的。如果master和slave网络连接断掉了,slave会让master从上次的replica offset开始继续复制

但是如果没有找到对应的offset,那么就会执行一次resynchronization

3、无磁盘化复制

master在内存中直接创建rdb,然后发送给slave,不会在自己本地落地磁盘了

通过配置repl-diskless-sync
repl-diskless-sync-delay,等待一定时长再开始复制,因为要等更多slave重新连接过来

4、过期key处理

slave不会过期key,只会等待master过期key。如果master过期了一个key,或者通过LRU淘汰了一个key,那么会模拟一条del命令发送给slave。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值