與mysql一樣,redis也支援主從複製、讀寫分離,且配置比mysql簡單很多。下面我們來一起看看redis的主從複製。
建立複製
預設情況下,Redis都是主節點。現在,我來示範如何開啟主從複製。
首先,開啟兩個redis服務,這兩個redis服務,除了綁定的連接埠不同且持久的檔案不同,其他設定完全一致
127.0.0.1:6379> keys * 1) "age" 2) "name" 127.0.0.1:6380> keys * (empty list or set)
6379這個redis目前有兩個鍵,而6380目前是空的。建立6379餘6380之間的主從關係,讓6379作為主節點,6380作為從節點。
建立複製有兩個方式:
修改6380的設定文件,在該設定檔中加上slaveof 127.0.0.1 6379,然後重啟redis服務
動態修改,直接輸入slaveof 127.0.0.1 6379
127.0.0.1:6380> slaveof 127.0.0.1 6379 OK 127.0.0.1:6380> keys * 1) "name" 2) "age"
可以看到,複製已經建立了,現在6380資料和6379是一致的了。
分別對6379及6380執行info replication指令,可以看到相關資訊。
127.0.0.1:6379> info replication # Replication role:master connected_slaves:1 …… 127.0.0.1:6380> info replication # Replication role:slave master_host:127.0.0.1 master_port:6379 ……
斷開複製
斷開複製操作非常簡單,只需執行slaveof no one即可。
127.0.0.1:6380> slaveof no one OK
另外還可以直接切換主節點。例如,現在6380是6370的從節點,現在6380想斷開6379的主從關係,與6381建立新的複製關係。那麼6380只要執行slaveof 127.0.0.1 6381即可。
但切主的時候需要注意一點,從節點之前的資料將會被清空,然後再去複製新主節點的資料。所以,如果之前的資料有用且沒有備份下,且不可進行切主操作。
密碼校驗
若主節配置了requirepass,那麼從節點就需要設定masterauth
只讀
預設情況下從節點執行進行讀取操作,無法進行寫入操作。因為這麼做是非常必要的,如果從節點進行了寫入操作,那麼就會造成主從節點的資料不一致的情況。如果想從節點也可以寫的話,修改設定項slave-read-only=no即可。
應用程式場景
redis的複製常見的應用程式場景有
資料的即時備份,一般此種情況,只有一個從節點,從節點開啟aof持久哈,節點的主要任務就是即時備份資料。
故障轉移,如果主節點發生了故障的話,那麼可以使用從節點來繼續運行系統
讀寫分離,比較適合於讀取比較多的場景,主節點進行寫入操作,多個從節點進行讀取操作。因為複製是非同步進行的,所以從節點資料可能會有延遲,這點也是開發時候需要注意的。
以上是Redis主從複製的詳細內容。更多資訊請關注PHP中文網其他相關文章!