部分复制是Redis 2.8以后出现的,用于处理在主从复制中因网络闪断等原因造成的数据丢失场景,当slave再次连上master后,如果条件允许,master会补发丢失数据给slave。因为补发的数据远远小于全量数据,可以有效避免全量复制的过高开销。部分复制流程图如下:
① 如果网络抖动(连接断开 connection lost)
② master还是会写repl_back_buffer(复制缓冲区)
③ slave会继续尝试连接主机
④ slave会把自己当前run_id和偏移量传输给master,并且执行pysnc命令同步
⑤ slave发送过来的offset在repl_back_buffer中,则master会将缓存中从offset以后的数据一次性同步给slave,否则全量复制
⑥ master同步长连接持续把写命令发送给slave,以保证数据的一致
3、主从搭建其中slave的主要配置如下:
port 6380 pidfile /var/run/redis_6380.pid dir /usr/local/redis-5.0.2/6380 replicaof 192.168.160.146 6379 replica-serve-stale-data yes replica-read-only yes