redis主从复制详述
一、主从复制详述 原理其实很坚决,master启动会生成一个 run id ,首次同步时会发生给slave,slave同步命令会带上run id以及offset,显然,slave启动(初次,重启)内存中没有run id,所以 master收到后会全量同步,发生 网络抖动 时,slave发生的同步命令会带上run id以及offset,master就知道去缓存中对应的偏移量开始到结尾那一段的命令发送给slave进行增量 同步。在正常运行过程中,master每收到一个数据变更命令都会发送到所有slave上。 1 全量同步 Redis全量复制一般发生在Slave初始化阶段,这时Slave需要将Master上的所有数据都复制一份。具体步骤如下: 1)从服务器连接主服务器,发送SYNC命令; 2)主服务器接收到SYNC命名后,开始执行BGSAVE命令生成RDB文件并使用缓冲区记录此后执行的所有写命令; 3)主服务器BGSAVE执行完后,向 所有从服务器(之所以是向所有从服务器发送应该是因为初始化是几乎同时收到SYNC命令, 归根到底是向所有发送了SYNC命令的slave发送RDB文件 ) 发送快照文件,并在发送期间 继续用 缓存区 记录被执行的写命令 ; 4)从服务器收到快照文件后丢弃所有旧数据,载入收到的快照; 5