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