1. 程式人生 > 資訊 >羅永浩吐槽索尼電視遙控器設計差:太難盲操,建議開除產品經理或設計師

羅永浩吐槽索尼電視遙控器設計差:太難盲操,建議開除產品經理或設計師

一、簡介:

         在Redis中,使用者可以通過執行SLAVEOF命令或者設定slaveof選項,讓一個伺服器去複製(replicate)另一個伺服器,我們稱呼被複制的伺服器為主伺服器(master),而對主伺服器進行復制的伺服器則被稱為從伺服器(slave),進行復制中的主從伺服器雙方的資料庫將儲存相同的資料,概念上將這種現象稱作“資料庫狀態一致”,或者簡稱“一致”。

二、舊版複製功能的實現:

         Redis的複製功能分為同步(sync)和命令傳播(command propagate)兩個操作:

  • 同步操作用於將從伺服器的資料庫狀態更新至主伺服器當前所處的資料庫狀態。
  • 命令傳播操作則用於在主伺服器的資料庫狀態被修改,導致主從伺服器的資料庫狀態出現不一致時,讓主從伺服器的資料庫重新回到一致狀態。

 

      同步:

 

         當客戶端向從伺服器傳送slaveof命令,要求從伺服器複製主伺服器時,從伺服器首先需要執行同步操作,將從伺服器的資料庫狀態更新至主伺服器當前所處的資料庫狀態。

        從伺服器需要向主伺服器傳送sync命令,執行步驟如下:

  1. 從伺服器向主伺服器傳送sync命令。
  2. 收到sync命令,主伺服器執行bgsave命令,在後臺生成一個RDB檔案,並使用一個緩衝區記錄從現在開始執行的所有寫命令。
  3. 主伺服器命令執行完畢,將生成的RDB檔案傳送給從伺服器,從伺服器接收並載入將自己的資料庫狀態更新至主伺服器執行bgsave命令時的資料庫狀態。
  4. 主伺服器將記錄在緩衝區裡面的所有寫命令傳送給從伺服器,從伺服器執行寫命令,將自己的資料庫狀態更新至主伺服器資料庫當前所處狀態。