首頁  >  文章  >  資料庫  >  Redis主從複製

Redis主從複製

齐天大圣
齐天大圣原創
2020-05-25 14:08:321366瀏覽

與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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn