redis-複製

redis主從之間的複製邏輯

  • redis2.8版本以前只有徹底複製功能,命令SYNC
  • redis2.8版本以後新增部分重同步實現,命令PSYNC
  • redis2.8版本以後新增心跳檢測,命令REPLCONF ACK <replication_offset>

一、SYNC命令的步驟請看下圖

二、PSYNC命令執行的過程請看下圖

2.一、什麼是積壓緩衝區

redis的積壓緩衝區的默認大小爲1MB,從服務器在執行PSYNC 命令,若是runid是主服務器的runid,則在積壓緩衝區裏面查找offset若是存在則返回 CONTINUE,開啓重同步。複製積壓緩衝區是一個固定長度的FIFO對了。redis

三、複製的實現步驟

  • SLAVEOF 127.0.0.1 6379 執行復制命令
  • 創建套接字鏈接
  • 從服務器發送PING命令,主返回PONG表ok。若是timeout或則返回錯誤則從新建套接字
  • 身份驗證以下圖
  • 發送端口信息,從執行REPLCONF listening-port 命令,信息保存主服務器信息中
  • 同步,執行PSYNC命令
  • 命令傳播,主給從發送寫命令

四、心跳檢測

每一個1s,從向主服務器發送REPLCONF ACK <replication_offset>服務器

  • 檢測主從服務器的網絡鏈接狀態。
  • 輔助實現min-slaves選項
  • 檢測命令丟失
相關文章
相關標籤/搜索