【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理
程序员文章站
2024-03-21 11:05:10
...
3. 【Redis主从架构】Redis主从复制原理,断点续传,无磁盘化复制,key过期处理
文章目录
1. Redis主从架构数据复制原理
-
当启动一个slave node的时候,它会发送一个PSYNC命令给master node节点,master node同时触发一次full resynchronization。
- 开始 full resynchronization的时候,master会启动一个后台线程,开始生成一份rdb快照文件,同时将生成快照文件期间的客户端接收到的所有写命令缓存到内存中。rdb快照文件生成完毕后,master会将这个RDB快照文件发送slave。
- slave node如果跟master node有网络故障,断开了连接,会自动重连。master如果发现有多个slave node都来重新连接,仅仅会启动一个rdb slave操作,用一份数据服务多个slave node。
-
如果slave node 重新连接master node,那么master node 仅仅复制, 从断掉连接开始计算,到slave本次重新连接那部分缺少的数据。
2. 主从复制断点续传
redis2.8开始,redis就支持主从复制的断点续传,如果主从复制的过程中,网络故障断掉了,那么就接着从上次复制的地方开始复制,而不是从头开始复制。
master node会在内存中维护一个backlog,master和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。
参考 石衫老师 《亿级流量教程》课程笔记