天天看點

這樣講Redis 主從複制的工作原理,或許你真的能聽懂~

主從複制的架構

  • 一主一從
  • 一主多從
這樣講Redis 主從複制的工作原理,或許你真的能聽懂~

主從複制的作用

  • 資料備份
  • 讀寫分離

主從複制的工作原理

  • runid

主節點的runid,從節點第一次請求複制主節點的時候,主節點會将此runid傳回

  • offset(偏移量)

目前資料的偏移量,例如執行一條指令後,産生一條資料後,會增大偏移量,從節點請求複制主節點的時候,會帶上這個資訊,讓主節點從這個偏移量之後的資料傳回給我。

全量複制

  • 建立連接配接後,從節點向主節點發送psync指令,請求同步,攜帶 runid和offset,如果第一次同步,傳 ?和-1
  • 主節點收到psync請求後,發現runid為?和offset為-1,則知道從節點希望全量複制,于是将自己的runid和offset傳回給從節點
  • 主節點執行bgsave,生成RDB檔案,在此期間生成的指令全部放到buffer中
  • 主節點将生成後的rdb檔案,傳輸給從節點
  • 從節點收到rdb檔案後,首先清除自己的資料,然後将rdb檔案加載到記憶體
  • 主節點再把緩沖區的指令發給從節點
  • 從節點再把緩沖區的指令加載到記憶體
這樣講Redis 主從複制的工作原理,或許你真的能聽懂~

增量複制

  • 從節點向主節點發送psync 指令 攜帶 已儲存的runid和offset
  • 主節點判斷runid是否和自己的id一緻,如果不一緻則執行全量同步
  • 主節點判斷offset是否在環形緩沖區内,如果不在澤執行全量同步
  • 否則執行增量同步