【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理

3. 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理

1. Redis主从架构数据复制原理

在这里插入图片描述

  1. 当启动一个slave node的时候,它会发送一个PSYNC命令给master node节点,master node同时触发一次full resynchronization

    1. 开始 full resynchronization的时候,master会启动一个后台线程,开始生成一份rdb快照文件,同时将生成快照文件期间的客户端接收到的所有写命令缓存到内存中。rdb快照文件生成完毕后,master会将这个RDB快照文件发送slave
    2. slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb slave操作,用一份数据服务多个slave node。
  2. 如果slave node 重新连接master node,那么master node 仅仅复制, 从断掉连接开始计算,到slave本次重新连接那部分缺少的数据

2. 主从复制断点续传

redis2.8开始,redis就支持主从复制的断点续传,如果主从复制的过程中,网络故障断掉了,那么就接着从上次复制的地方开始复制,而不是从头开始复制

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

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

3. 无磁盘化复制

master在内存中直接创建rdb快照文件,然后发送给slave不会在本地落地到磁盘了。

  • 无磁盘化配置
repl-diskless-sync
repl-diskless-sync-delay yes,等待一定时长再开始复制,因为要等更多的slave重新连接过来

4. 过期key处理

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

参考 石衫老师 《亿级流量教程》课程笔记

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值