Redis主從復(fù)制
為了提高性能和系統(tǒng)可用,Redis都會做主從復(fù)制,一來可以分擔(dān)主庫壓力,二來在主庫掛掉的時候從庫依舊可以提供服務(wù)。Redis的主從復(fù)制是異步復(fù)制,返回結(jié)果給客戶端和同步命令到從庫是兩回事,互不相干,主庫也不關(guān)心從庫的執(zhí)行結(jié)果,對于同步命令執(zhí)行的結(jié)果,從庫會直接丟棄并不返回給主庫。Redis的主從復(fù)制簡單高效,但也不太算可靠。
Redis的主從復(fù)制是異步復(fù)制;全量同步(或增量同步)+命令傳播
Slave Server
Slave Server啟動初始化配置,根據(jù)slaveof配置設(shè)置Slave Server的主庫host(masterhost)和Slave Server的同步狀態(tài)(repl_state),和所有Server一樣監(jiān)聽客戶端鏈接,開啟后臺任務(wù)。
后臺定時任務(wù)包含,觸發(fā)AOF重寫、RDB快照、redis監(jiān)控、狀態(tài)收集、主從同步相關(guān)定時任務(wù)等
主從同步后臺定時任務(wù)包含,從庫連接主庫、從庫重連主庫、從庫給主庫發(fā)送同步進(jìn)度、主庫向從庫發(fā)送心跳包、主庫刪除超時從庫、主庫清除同步緩沖區(qū)、主庫刷新從庫狀態(tài)等
從庫連接主庫