Redis--叢集
阿新 • • 發佈:2018-11-02
主伺服器:master
從伺服器:slave
命令:SLAVEOF ip port (在slave中執行該命令,則將ip對應的伺服器設定為主伺服器。)
主從同步是實現步驟:(用於新的同步)
1、從伺服器向主伺服器傳送SYNC命令。
2、主伺服器收到命令後,執行BGSAVE命令,生產RDB檔案,並使用一個緩衝區記錄從現在開始主伺服器執行的所有寫命令。
3、當RDB檔案生成完畢,主伺服器將檔案傳送給從伺服器,從伺服器解析RDB檔案,完成主從的同步狀態。
4、主伺服器將緩衝區記錄的寫命令,傳送給從伺服器,從伺服器執行這些命令。最終完成伺服器的主從同步(命令傳播)。
部分同步的實現原理:(用於斷線重鏈同步)
1、主從伺服器的複製偏移量(偏移量相當於執行的步驟id,每次執行一個命令,就步進1)。
2、主伺服器的寫命令緩衝區(長度固定的佇列,預設1MB,先進先出)。
3、伺服器的執行ID(每個Redis都有對應的執行ID,執行ID在伺服器執行的時候,自動生成。在首次同步時,從伺服器會儲存主伺服器的ID)。
實現步驟:
1、斷線重連後,從伺服器向主伺服器傳送偏移量。主伺服器根據從伺服器的偏移量,在快取區中尋找對於的值,如果找到則執行部分同步,如果沒找到則執行全量同步。
2、根據偏移量從緩衝區找到對應的命令列表,然後傳送給從伺服器(命令傳播)。
3、只有斷線重連後,從伺服器發生的主伺服器ID與當前的主伺服器ID一致時,才可以進行部分同步。否則進行全量同步。