参考答案
- 当启动一个 slave node 的时候,它会发送一个
PSYNC
命令给 master node。 - 如果这是 slave node 初次连接到 master node,那么会触发一次
full resynchronization
全量复制。此时,master 会启动一个后台线程,开始生成一份RDB
快照文件,同时,还会将从客户端 client 新收到的所有写命令缓存在内存中。 RDB
文件生成完毕后, master 会将这个RDB
发送给 slave,slave 会先写入本地磁盘,然后再从本地磁盘加载到内存中,- 接着,master 会将内存中缓存的写命令发送到 slave,slave 也会同步这些数据。
- slave node 如果跟 master node 有网络故障,断开了连接,会自动重连,连接之后 master node 仅会复制给 slave 部分缺少的数据。
Redis主从复制的过程原理
- 当从库和主库建立MS关系后,会向主数据库发送SYNC命令。
- 主库接收到SYNC命令后会开始在后台保存快照(RDB持久化过程),并将期间接收到的写命令缓存起来。
- 当快照完成后,主Redis会将快照文件和所有缓存的写命令发送给从Redis。
- 从Redis接收到后,会载入快照文件并且执行收到的缓存的命令。
- 之后,主Redis每当接收到写命令时就会将命令发送从Redis,从而保证数据的一致。
Redis主从复制的缺点
- 所有的slave节点数据的复制和同步都由master节点来处理,会照成master节点压力太大,使用主从从结构来解决。
以上,是Redis面试题【Redis主从复制的核心原理是什么】的参考答案。
输出,是最好的学习方法。
欢迎在评论区留下你的问题、笔记或知识点补充~
—end—