標籤:
通過持久化功能,Redis保證了即使在伺服器重啟的情況下也不會損失(或少量損失)資料。但是由於資料是儲存在一台伺服器上的,如果這台伺服器的硬碟出現故障,也會導致資料丟失。為了避免單點故障,我們希望將資料庫複寫多個副本以部署在不同的伺服器上,即使有一台伺服器出現故障其他伺服器依然可以繼續提供服務。這就要求當一台伺服器上的資料庫更新後,可以自動將更新的資料同步到其他伺服器上,Redis提供了複製(replication)功能可以自動實現同步的過程。
配置方法
 通過設定檔 從資料庫的設定檔中加入slaveof master-ip master-port,主要資料庫無需配置
 
 通過命令列參數 啟動redis-server的時候,使用命令列參數--slaveof master-ip master port
redis-server --port 6380 --slaveof 127.0.0.1 6379
 
 通過命令SLAVEOF master-ip master-port
redis>SLAVEOF 127.0.0.1 6379
SLAVEOF NO ONE可以是當前資料庫停止接收其他資料庫的同步,轉成主要資料庫
 
 
 
redis主從複製
    redis主從複製的特點:
     1.一個master可以擁有多個slave
     2.多個slave可以串連同一個master外,還可以串連到其它slave
     3.主從複製不會阻塞master,在同步資料時,master可以繼續處理client的請求
     4.提高系統的伸縮性
    redis主從複製過程:
     1.slave與master建立串連,發送sync同步命令
     2.master會啟動一個後台進程,將資料庫快照集儲存到檔案中,同時master主進程會開始收集新的寫命令
       並緩衝。
     3.後台完成儲存後,就將此檔案發送給slave
     4.slave將此檔案儲存到硬碟上
    配置主從伺服器:
     配置slave伺服器很簡單,只需要在slave的設定檔中加入以下配置:
       slaveof 222.27.174.98 6379   //指定master的主機的IP和連接埠號碼
       masterauth 888888   //主機資料庫的密碼
     我們可以通過info命令來查看原生redis是主伺服器還是從伺服器。
  通過 info Replication 查看role是master還是slave,及相關資訊
優點及應用情境
 讀寫分離 通過複製可以實現讀寫分離以提高伺服器的負載能力。在常見的情境中,讀的頻率大於寫,當單機的Redis無法應付大量的讀請求時(尤其是較耗資源的請求,比如SORT命令等)可以通過複製功能建立多個從資料庫,主要資料庫只進行寫操作,而從資料庫負責讀操作。
 
 從資料庫持久化 持久化通常相對比較耗時,為了提高效能,可以通過複製功能建立一個(或若干個)從資料庫,並在從資料庫中啟用持久化,同時在主要資料庫禁用持久化。當從資料庫崩潰時重啟後主要資料庫會自動將資料同步過來,所以無需擔心資料丟失。而當主要資料庫崩潰時,需要在從資料庫中使用SLAVEOF NO ONE命令將從資料庫提升成主要資料庫繼續服務,並在原來的主要資料庫啟動後使用SLAVEOF命令將其設定成新的主要資料庫的從資料庫,即可將資料同步回來。
 
Redis 從資料庫配置