编辑
2023-10-24
缓存中间件
0
请注意,本文编写于 207 天前,最后修改于 50 天前,其中某些信息可能已经过时。

目录

Redis复制功能怎么实现的?
Redis主从复制的整个流程是什么样的?

Redis复制功能怎么实现的?

在Redis中,用户可以通过执行SLAVEOF命令或者设置slaveof选项,让一个服务器去复制(replicate)另一个服务器,通常被复制的服务器被称为主服务器(master),而对主服务器进行复制的服务器则被称为从服务器(slave)。

Redis使用PSYNC命令来执行复制时的同步操作。PSYNC命令具有完整重同步(full resynchronization)和部分重同步(partial resynchronization)两种模式:

完整重同步用于处理初次复制情况:通过让主服务器创建并发送RDB文件,以及向从服务器发送保存在缓冲区里面的写命令来进行同步。

部分重同步则用于处理断线后重复制情况:当从服务器在断线后重新连接主服务器时,如果条件允许,主服务器可以将主从服务器连接断开期间执行的写命令发送给从服务器,从服务器只要接收并执行这些写命令,就可以将数据库更新至主服务器当前所处的状态。(其实主服务器和从服务器会分别维护一个复制偏移量,主从之间的复制会增加主从的偏移量值,通过偏移量值就能看出主从数据是否有差异。)

Redis主从复制的整个流程是什么样的?

​ 通过向从服务器发送SLAVEOF命令,可以让一个从服务器去复制一个主服务器,从服务器接收到SLAVEOF命令后:

​ 1、设置主服务器的地址和端口

​ 2、建立套接字连接

​ 3、发送PING命令

​ 4、身份验证

​ 5、发送端口信息

​ 6、同步,从服务器将向主服务器发送PSYNC命令,执行同步操作,并将自己的数据库更新至主服务器数据库当前所处的状态。

​ 7、命令传播,当完成了同步之后,主从服务器就会进入命令传播阶段,这时主服务器只要一直将自己执行的写命令发送给从服务器,而从服务器只要一直接收并执行主服务器发来的写命令,就可以保证主从服务器一直保持一致了。

本文作者:whitebear

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!