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命令認證了。相當於做了一個免密碼登入。相關推薦:mysql影片教學:
以上是redis主從複製介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!