Redis主從複制特别友善,不需要其他中間件,而且自帶讀寫分離
前提準備
- 至少兩台伺服器,或同一個IP的不同端口(我用的是VMware虛拟出來的三台Linux)
- 安裝Redis
- 不同伺服器務必關防火牆或開放端口号
實作原理
(圖檔源自:螞蟻課堂)
- 從伺服器連接配接主伺服器,發送SYNC指令;
- 主伺服器接收到SYNC命名後,開始執行BGSAVE指令生成RDB檔案并使用緩沖區記錄此後執行的所有寫指令;
- 主伺服器BGSAVE執行完後,向所有從伺服器發送快照檔案,并在發送期間繼續記錄被執行的寫指令;
- 從伺服器收到快照檔案後丢棄所有舊資料,載入收到的快照;
- 主伺服器快照發送完畢後開始向從伺服器發送緩沖區中的寫指令;
- 從伺服器完成對快照的載入,開始接收指令請求,并執行來自主伺服器緩沖區的寫指令;
主從複制步驟
叢集圖:
① 修改每台伺服器redis.conf
### 修改為yes 允許背景啟動
daemonize yes
### 取消密碼注釋,并設定密碼
requirepass 123456
② 從伺服器slave1配置主從同步(從配主不配)
--- 修改從redis中的 redis.conf檔案
### 主伺服器IP 端口号
slaveof 192.168.93.138 6379
### 主redis伺服器密碼
masterauth 123456
③ 同理配置salve2,主從同步完畢
--- 修改從redis中的 redis.conf檔案
### 主伺服器IP 端口号
### slave2可以将主伺服器配置成slave1,但根本意義上主伺服器還是master
slaveof 192.168.93.138 6379 或 slaveof 192.168.93.139 6379
### 主redis伺服器密碼
masterauth 123456
注意:
- 在slave2主從同步之前的資料也會同步到slave2中
- Redis的從伺服器預設為 only read,不需要配置
筆者水準有限,若有錯誤歡迎糾正,歡迎讨論
參考:https://www.cnblogs.com/kevingrace/p/5685332.html(很好的博文,想更深入了解Redis主從原理的可以參照)
螞蟻課堂