Redis 的主从复制原理是什么?

Redis主从复制的工作原理是:

  1. Master和 slave 之间建立 TCP长连接。
  2. Master服务器负责将修改过的数据同步给slaves。
  3. 当slave连接到master后,master会将当前数据库快照同步给slave,slave将快照恢复为当前数据。
  4. 之后master每次有数据修改时,会将修改命令发送给slave。
  5. Slave重新执行收到的修改命令,保持数据与master一致。

主从复制的具体过程:
1) Slave向Master发起连接和replication request。
2) Master接收到请求后,会将当前数据库的快照 dump 给Slave。
3) Slave接收快照数据,加载到内存并应用。此时Slave的数据与Master同步。
4) Master此后每次有数据修改时(写操作),都会将写命令通过嵌入的Replication Protocol在通道上传给所有连接的Slave。
5) Slave接收到命令后直接执行,使得自身数据保持实时一致。
6) Master产生写操作的顺序被保证传递给所有Slave,从而实现数据的强一致性。

代价主要有:

  • Master的写性能受影响
  • Slave需要一定时间重新同步Master

但主从复制可以为Redis提供:

  • 读写分离、提高负载能力
  • 数据冗余、实现高可用性
  • Slave可以做备份复制Master