redis的復制功能是支持多個數據庫之間的數據同步。一類是主數據庫(master)一類是從數據庫(slave),主數據庫可以進行讀寫操作,當發生寫操作的時候自動將數據同步到從數據庫,而從數據庫一般是只讀的,并接收主數據庫同步過來的數據,一個主數據庫可以有多個從數據庫,而一個從數據庫只能有一個主數據庫。
推薦:redis入門教程
通過redis的主從復制功能可以很好的實現數據庫的讀寫分離,提高服務器的負載能力,主服務器主要負責寫操作,從服務器主要負責讀操作
主從復制的過程:
1:當一個從數據庫啟動時,會向主數據庫發送sync命令,
2:主數據庫接收到sync命令后會開始在后臺保存快照(執行rdb操作),并將保存期間接收到的命令緩存起來
3:當快照完成后,redis會將快照文件和所有緩存的命令發送給從數據庫。
4:從數據庫收到后,會載入快照文件并執行收到的緩存的命令。
注意:redis2.8之前的版本:當主從數據庫同步的時候從數據庫因為網絡原因斷開重連后會重新執行上述操作,不支持斷點續傳。redis2.8之后支持斷點續傳。
注意:從 Redis 2.8 開始, 為了保證數據的安全性, 可以通過配置min-slaves-to-write, 讓一個主節點在至少有N個從節點的情況下才能執行寫操作。從節點以每秒一次的頻率ping主節點,主節點會記錄各個從服務器最后一次向它發送ping的時間。用戶可以通過配置, 指定網絡延遲的最大值 min-slaves-max-lag以及執行寫操作所需的最少從服務器數量?
??min-slaves-to-write ??min-slaves-to-write?3 ??min-slaves-max-lag?10
如果至少有 min-slaves-to-write 個從服務器, 并且這些服務器的延遲值都少于 min-slaves-max-lag 秒, 那么主服務器才會執行客戶端請求的寫操作。只要有一個條件不滿足,寫操作就不會執行,主服務器會向請求執行寫操作的客戶端返回一個錯誤。
二、主從復制的部署:
Redis主從結構支持一主多從
主節點:192.168.1.170
從節點:192.168.1.171
注意:所有從節點的配置都一樣
方式1:手動修改配置文件
只需要額外修改從節點中redis的配置文件中的slaveof屬性即可
slaveof?192.168.1.170?6379
啟動170主節點上面的redis,查看redis的info信息(執行info命令 )
啟動171從節點上面的redis
查看redis的info信息
方式2:動態設置
通過redis-cli 連接到從節點服務器,執行下面命令即可。
?三、主從復制需要注意的問題:
① 如果你使用主從復制,那么要確保你的master激活了持久化,或者確保它不會在當掉后自動重啟。slave是master的完整備份,因此如果master通過一個空數據集重啟,slave也會被清掉。
②在配置redis復制功能的時候如果主數據庫設置了密碼,需要在從數據的配置文件中通過masterauth參數設置主數據庫的密碼,這樣從數據庫在連接主數據庫時就會自動使用auth命令認證了。相當于做了一個免密碼登錄。