主从服务器(复制)

redis中,用户可以通过执行SLAVEOF 命令或设置slaveof选项,让一个服务器复制另一个服务器。

  • 主服务器(master):被复制的服务器。
  • 从服务器(slave):对主服务器进行复制的服务器。

主从服务器双方数据库状态一致。

127.0.0.1:12345> SLAVEOF 127.0.0.1 6379

主从服务器(复制)_第1张图片

1. 旧版复制功能的实现

redis的复制功能分为两个操作:
1. 同步(sync)
2. 命令传播(command propagate)

1.1 同步

从服务器向主服务器发送SYNC命令,实现同步操作。
主从服务器(复制)_第2张图片

1.2 命令传播

每当主服务器执行客户端发送的写命令时,主服务器的数据库状态可能被修改,导致主从服务器状态不一致。为了让主从服务器再次回到一致状态,主服务器需要对从服务器执行命令传播操作:主服务器将造成主从服务器不一致的命令,发送给从服务器执行,使主从服务器再次回到一致状态。

1.3 旧版复制功能的缺陷

redis中,从服务器对主服务器的复制分两种情况:
1. 初次复制
2. 断线后重复制

旧版复制在处理断线后重复制时,采用和初次复制一样的操作,比较低效。

1.4 新版复制功能的实现

新版复制功能使用PSYNC命令代替SYNC命令,具有:
1. 完整重同步:处理初次复制情况。
2. 部分重同步:处理断线后重复制情况。

主从服务器(复制)_第3张图片

你可能感兴趣的:(主从服务器(复制))