主从库之间采用读写分离。
读操作:主库、从库都可以接收;
写操作:首先到主库执行,然后,主库将写操作同步给从库。
同步机制
第一次同步
通过 replicaof
(Redis 5.0 之前使用 slaveof
)命令形成主库和从库的关系。
1、主从库间建立连接、协商同步,为全量复制做准备。
从库和主库建立起连接,发送 psync 命令,表示要进行数据同步,主库确认回复,FULLRESYNC响应表示第一次复制采用的全量复制。
psync 命令包含了主库的 runID 和复制进度 offset 两个参数。
2、主库将所有数据同步给从库。从库收到数据后,在本地完成数据加载。
主库执行 bgsave 命令,生成 RDB 文件,接着将文件发给从库。
从库接收到 RDB 文件后,会先清空当前数据库(避免之前数据的影响),然后加载 RDB 文件。
3、主库会把第二阶段执行过程中新收到的写命令(replication buffer中的修改操作),再发送给从库。
主库会在内存中使用 replication buffer,记录 RDB 文件生成后收到的所有写操作。