MST

星途 面试题库

面试题:Redis中PSYNC命令执行流程的主要阶段有哪些

请简要阐述Redis中PSYNC命令执行流程包含的几个主要阶段,以及每个阶段大概的操作是什么。
22.3万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

主要阶段及操作

  1. 握手阶段
    • 从服务器向主服务器发送 PSYNC 命令,命令格式可能为 PSYNC <run_id> <offset>。如果是初次同步,<run_id>?<offset>-1;如果是部分重同步,<run_id> 为主服务器的运行ID,<offset> 为从服务器当前的复制偏移量。
    • 主服务器收到 PSYNC 命令后,根据情况判断是初次同步还是部分重同步。如果是初次同步,主服务器会回复 FULLRESYNC <run_id> <offset>,其中 <run_id> 是主服务器的运行ID,<offset> 是主服务器当前的复制偏移量;如果是部分重同步,主服务器回复 CONTINUE
  2. 数据同步阶段
    • 全量同步(初次同步):主服务器执行 BGSAVE 命令生成RDB文件,并将RDB文件发送给从服务器。在发送RDB文件期间,主服务器会将新的写命令缓存在缓冲区。从服务器收到RDB文件后,会先清空自己的数据,然后加载RDB文件。加载完成后,主服务器会将缓冲区中缓存的写命令发送给从服务器,从服务器执行这些命令,完成数据同步。
    • 部分同步:主服务器根据从服务器发送的偏移量,从自己的复制积压缓冲区中找到从服务器缺失的数据,发送给从服务器。从服务器接收并执行这些数据,完成部分数据的同步。
  3. 命令传播阶段
    • 数据同步完成后,主从服务器进入命令传播阶段。主服务器会将接收到的写命令发送给从服务器,从服务器接收并执行这些命令,从而保证主从服务器数据的一致性。