這裡寫目錄标題
-
- 18.1 REPLICAOF:将伺服器設定為從伺服器
-
- 複制指令的命名變化
- 18.1.1 通過配置選項設定從伺服器
- 18.1.2 取消複制
- 18.1.3 其他資訊
- 參考目錄
18.1 REPLICAOF:将伺服器設定為從伺服器
複制指令的命名變化
在很長的一段時間裡,Redis一直使用
SLAVEOF
作為複制指令,但是從 5.0.0版本開始,Redis正式将SLAVEOF指令改名為
REPLICAOF
指令并逐漸廢棄原來的SLAVEOF指令。是以,如果你使用的是Redis 5.0.0之前的版本,那麼請使用
SLAVEOF
指令代替本章中的
REPLICAOF
指令,并使用
slaveof
配置選項代替本章中的
replicaof
配置選項。與此相反,如果你使用的是Redis 5.0.0或之後的版本,那麼就應該使用
REPLICAOF
指令 而不是
SLAVEOF
指令,因為後者可能會在未來的某個時候被正式廢棄。
使用者可以通過執行
REPLICAOF
指令,将接收這個指令的Redis伺服器設定為另一個Redis伺服器的從伺服器:
指令的host參數用于指定主伺服器的位址,而port參數則用于指定主伺服器的端口号。因為Redis的複制操作是以異步方式進行的,是以收到 REPLICAOF指令的伺服器在記錄主伺服器的位址和端口之後就會向用戶端傳回OK,至于實際的複制操作則會在背景開始執行。
現在,假設我們的用戶端正連接配接着伺服器127.0.0.1:12345,如果我們 想讓這個伺服器成為127.0.0.1:6379的從伺服器,那麼隻需要執行以下指令即可:
在接收到REPLICAOF指令之後,主從伺服器将執行資料同步操作:從伺服器原有的資料将被清空,取而代之的是主伺服器傳送過來的資料副本。資料同步完成之後,主從伺服器将擁有相同的資料。
在将127.0.0.1:12345設定為127.0.0.1:6379的從伺服器之後,如果我們 在主伺服器127.0.0.1:6379中執行以下指令,建立出一個msg鍵:
那麼這個msg鍵在從伺服器127.0.0.1:12345上應該也能夠通路到:
18.1.1 通過配置選項設定從伺服器
使用者除了可以使用REPLICAOF指令将運作中的Redis伺服器設定為從伺服器之外,還可以通過設定replicaof配置選項,在啟動Redis伺服器的同 時将它設定為從伺服器:
比如,通過執行以下指令,我們可以在啟動伺服器127.0.0.1:10086的 同時,将它設定為127.0.0.1:6379的從伺服器:
18.1.2 取消複制
在使用REPLICAOF指令或者replicaof配置選項将一個伺服器設定為從伺服器之後,我們可以通過執行以下指令,讓從伺服器停止複制,重新變回主伺服器:
伺服器在停止複制之後不會清空資料庫,而是會繼續保留複制産生的所 有資料。
比如,對于之前設定的從伺服器127.0.0.1:12345,我們可以通過執行 以下指令,讓它停止複制,重新變回主伺服器:
指令傳回OK表示複制已經停止。因為伺服器在停止複制之後仍然會保留複制時産生的資料,是以我們可以繼續通路之前設定的msg鍵:
18.1.3 其他資訊
複雜度:REPLICAOF指令本身的複雜度為O(1),但它引起的異步複 制操作的複雜度為O(N),其中N為主伺服器包含的鍵值對總數量。 REPLICAOF no one指令的複雜度為O(1)。
版本要求:REPLICAOF指令從Redis 5.0.0版本開始可用。SLAVEOF命 令從1.0.0版本開始可用,但從5.0.0版本開始逐漸廢棄。
參考目錄
絕大多數 内容來自 Redis使用手冊 (黃健宏 著) 第18章 複制