Redis系列-复制
一.什么是复制?
Redis复制是不同Redis实例之间的数据同步,其中我们将被复制的Redis实例称之为主服务器,复制数据的Redis实例称之为从服务器。复制的方式通常为主服务器将数据发送到从服务器,从服务器接收到数据,将数据保存在当前实例中,最终的目标是保证主服务器与从服务器间的数据一致及同步。
二.复制的实现
1.同步
1.1 SYNC
从服务器通过向主服务器发送SYNC命令,来实现同步。SYNC命令的执行步骤:
(1) 从服务器向主服务器发送SYNC命令
(2) 接收到SYNC命令的主服务器执行BGSAVE命令,在后台生成一个RDB文件,并使用一个缓冲区记录一个从现在开始执行的所有写命令。
(3) 当主服务器的BGSAVE命令执行完毕时,主服务器会将BGSAVE命令生成的RDB文件发送给从服务器。从服务器接收并加载这个RDB文件,将从服务器的数据库状态更新至主服务器执行BGSAVE命令时相同的数据库状态
(4) 主服务器将缓冲区中记录的写命令传播给从服务器,从服务器执行这些命令,将从服务器数据库的状态更新至主服务器当前的状态。
1.2 PSYNC
Redis2.8版本之后使用PSYNC命令替代SYNC命令来执行复制时的同步操作。PSYNC支持完整重同步和部分重同步两种模式。
1.2.1 完整重同步
完整重同步主要用于初次复制的