Redis主從複製原理

前言:
MySQL主從複製的緣由同樣, Redis雖然讀取寫入的速度都特別快,可是也會產生讀壓力特別大的狀況。爲了分擔讀壓力,Redis支持主從複製,Redis的主從結構能夠採用一主多從或者級聯結構,Redis主從複製能夠根據是不是全量分爲全量同步和增量同步。下圖爲級聯結構。
 
 
 
1 全量同步
  Redis全量複製通常發生在Slave初始化階段,這時Slave須要將Master上的全部數據都複製一份。具體步驟以下: 
  1)從服務器鏈接主服務器,發送SYNC命令; 
  2)主服務器接收到SYNC命名後,開始執行BGSAVE命令生成RDB文件並使用緩衝區記錄此後執行的全部寫命令; 
  3)主服務器BGSAVE執行完後,向全部從服務器發送快照文件,並在發送期間繼續記錄被執行的寫命令; 
  4)從服務器收到快照文件後丟棄全部舊數據,載入收到的快照; 
  5)主服務器快照發送完畢後開始向從服務器發送緩衝區中的寫命令; 
  6)從服務器完成對快照的載入,開始接收命令請求,並執行來自主服務器緩衝區的寫命令; 
 
 
 
完成上面幾個步驟後就完成了從服務器數據初始化的全部操做,從服務器此時能夠接收來自用戶的讀請求。
2 增量同步
  Redis增量複製是指Slave初始化後開始正常工做時主服務器發生的寫操做同步到從服務器的過程。 
增量複製的過程主要是主服務器每執行一個寫命令就會向從服務器發送相同的寫命令,從服務器接收並執行收到的寫命令。
 
3 Redis主從同步策略
  主從剛剛鏈接的時候,進行全量同步;全同步結束後,進行增量同步。固然,若是有須要,slave 在任什麼時候候均可以發起全量同步。redis 策略是,不管如何,首先會嘗試進行增量同步,如不成功,要求從機進行全量同步。
 
4 注意點
若是多個Slave斷線了,須要重啓的時候,由於只要Slave啓動,就會發送sync請求和主機全量同步,當多個同時出現的時候,可能會致使Master IO劇增宕機。
相關文章
相關標籤/搜索