| 什么是主從復(fù)制Redis的主從復(fù)制機(jī)制是指可以讓從服務(wù)器(slave)能精確復(fù)制主服務(wù)器(master)的數(shù)據(jù),如下圖所示: 
           或者         
 主從復(fù)制的方式和工作原理工作方式:Redis主從復(fù)制主要有兩種模式:完整重同步(full resynchronization)和部分重同步(partial resynchronization) 
 
 完整同步機(jī)制,我們非常好理解。比如從機(jī)首次連接到主機(jī)后,那么就是完整同步了。此時(shí)主機(jī)把RDB文件打包發(fā)送給從機(jī),從機(jī)同步即可。 如果在此期間,主機(jī)源源不斷的有新的命令,那么全部放入到緩沖區(qū)中,然后進(jìn)行部分同步,將緩沖區(qū)里面的數(shù)據(jù)發(fā)送給從機(jī)即可。 部分同步還有一種使用情況就是,網(wǎng)絡(luò)不穩(wěn)定,斷了之后,從機(jī)和主機(jī)的同步。也是用到了部分同步機(jī)制。 
 原理:部分重同步功能由以下三個(gè)部分構(gòu)成: 
 
 復(fù)制偏移量執(zhí)行復(fù)制的雙方——主服務(wù)器和從服務(wù)器會分別維護(hù)一個(gè)復(fù)制偏移量: 
 通過對比主從服務(wù)器的復(fù)制偏移量,程序可以很容易地知道主從服務(wù)器是否處于一致狀態(tài): 
 如下面的情況: 
 
 復(fù)制積壓緩沖區(qū)如果發(fā)現(xiàn)偏移量不一樣,那么就會需要用到緩沖區(qū)了。 復(fù)制積壓緩沖區(qū)是由主服務(wù)器維護(hù)的一個(gè)固定長度(fixed-size)先進(jìn)先出(FIFO)隊(duì)列,默認(rèn)大小為1MB。 當(dāng)主服務(wù)器進(jìn)行命令傳播時(shí),它不僅會將寫命令發(fā)送給所有從服務(wù)器,還會將寫命令入隊(duì)到復(fù)制積壓緩沖區(qū)里面,如圖所示。 
 
 當(dāng)從服務(wù)器重新連上主服務(wù)器時(shí),從服務(wù)器會通過PSYNC命令將自己的復(fù)制偏移量offset發(fā)送給主服務(wù)器,主服務(wù)器會根據(jù)這個(gè)復(fù)制偏移量來決定對從服務(wù)器執(zhí)行何種同步操作: 
 
 服務(wù)器運(yùn)行ID除了復(fù)制偏移量和復(fù)制積壓緩沖區(qū)之外,實(shí)現(xiàn)部分重同步還需要用到服務(wù)器運(yùn)行ID(run ID): 
 | 
|  |