Redis主從復制
來自靈魂的拷問:什么是Redis主從復制?
簡言之就是:
- 主對外從對內,主可寫從不可寫
- 主掛了,從不可為主
看下面的圖加深下理解:
對,你沒看錯,Redis主從復制沒有動態選舉Master節點的能力,主掛了服務就不可以寫數據了。僅僅就是增強了應用讀數據的并發量同時做數據備份。
一般生產環境會采用 哨兵 或者 Redis Cluster 這種具備Master自動選舉的方案,我們學習時還是要掌握主從的原理后,再去更深一步,對于哨兵和Redis Cluster方案感興趣的話,可以留言告訴我,咱們后面安排上。
主從如何配置
接下來,我們實戰一下redis的主從架構配置:
- 主redis無需任何配置
- 從機需要修改redis.conf文件中如下配置項
port 6378 # 如果是使用的一臺機器注意端口要與主機不同
# slaveof < masterip > < masterport >
# 表示當前【從服務器】對應的【主服務器】的IP是192.168.10.135,端口是6379。
slaveof 192.168.137.6 6379
臥槽,你是不是想問:這么簡單么?沒錯就是這么無情,但是這種事情一般代碼越少,事情越大,實現原理是啥呀?怎么就可以主從復制了呢?
別慌,七哥,帶大家好好縷一縷,整完去應付面試絕對是沒有問題的。
實現原理
Redis從2.8版本開始,使用PSYNC命令代替SYNC命令來執行復制時的同步操作。因此本文只講解目前采用PSYNC的同步原理。
PSYNC命令具有完整同步(full resynchronization) 和 部分同步 (partial resynchronization)兩種模式:
- 其中完整同步用于處理初次復制情況:完整重同步的執行步驟是通過讓主服務器創建并發送RDB文件,以及向從服務器發送保存在緩沖區里面的寫命令來進行同步;
- 而部分同步則用于處理斷線后重復制情況:當從服務器在斷線后重新連接主服務器時,如果條件允許,主服務器可以將主從服務器連接斷開期間執行的寫命令發送給從服務器,從服務器只要接收并執行這些寫命令,就可以將數據庫更新至主服務器當前所處的狀態。
下圖展示了主從服務器在執行部分重同步時的通信過程:
-
數據
+關注
關注
8文章
7080瀏覽量
89177 -
數據庫
+關注
關注
7文章
3823瀏覽量
64506 -
架構
+關注
關注
1文章
516瀏覽量
25495 -
Redis
+關注
關注
0文章
376瀏覽量
10888
發布評論請先 登錄
相關推薦
評論