天天看點

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

這裡寫目錄标題

    • 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伺服器的從伺服器:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        指令的host參數用于指定主伺服器的位址,而port參數則用于指定主伺服器的端口号。因為Redis的複制操作是以異步方式進行的,是以收到 REPLICAOF指令的伺服器在記錄主伺服器的位址和端口之後就會向用戶端傳回OK,至于實際的複制操作則會在背景開始執行。

        現在,假設我們的用戶端正連接配接着伺服器127.0.0.1:12345,如果我們 想讓這個伺服器成為127.0.0.1:6379的從伺服器,那麼隻需要執行以下指令即可:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        在接收到REPLICAOF指令之後,主從伺服器将執行資料同步操作:從伺服器原有的資料将被清空,取而代之的是主伺服器傳送過來的資料副本。資料同步完成之後,主從伺服器将擁有相同的資料。

        在将127.0.0.1:12345設定為127.0.0.1:6379的從伺服器之後,如果我們 在主伺服器127.0.0.1:6379中執行以下指令,建立出一個msg鍵:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        那麼這個msg鍵在從伺服器127.0.0.1:12345上應該也能夠通路到:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

18.1.1 通過配置選項設定從伺服器

        使用者除了可以使用REPLICAOF指令将運作中的Redis伺服器設定為從伺服器之外,還可以通過設定replicaof配置選項,在啟動Redis伺服器的同 時将它設定為從伺服器:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        比如,通過執行以下指令,我們可以在啟動伺服器127.0.0.1:10086的 同時,将它設定為127.0.0.1:6379的從伺服器:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

18.1.2 取消複制

        在使用REPLICAOF指令或者replicaof配置選項将一個伺服器設定為從伺服器之後,我們可以通過執行以下指令,讓從伺服器停止複制,重新變回主伺服器:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        伺服器在停止複制之後不會清空資料庫,而是會繼續保留複制産生的所 有資料。

        比如,對于之前設定的從伺服器127.0.0.1:12345,我們可以通過執行 以下指令,讓它停止複制,重新變回主伺服器:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

        指令傳回OK表示複制已經停止。因為伺服器在停止複制之後仍然會保留複制時産生的資料,是以我們可以繼續通路之前設定的msg鍵:

Redis 中的 複制(主從複制) REPLICAOF:将伺服器設定為從伺服器 通過配置選項設定從伺服器 取消複制

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章 複制

繼續閱讀