溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

redis持久化和復(fù)制原理

發(fā)布時(shí)間:2020-05-23 05:17:40 來源:網(wǎng)絡(luò) 閱讀:994 作者:紅塵世間 欄目:建站服務(wù)器

Redis提供了兩種不同的持久化方式:

RDB:在指定的時(shí)間間隔內(nèi)生成數(shù)據(jù)快照,以二進(jìn)制進(jìn)行存儲(chǔ)

AOF:記錄服務(wù)器執(zhí)行的所有寫操作命令,并在服務(wù)器啟動(dòng)時(shí),通過重新執(zhí)行這些命令來還原數(shù)據(jù)集新命令會(huì)被追加到文件的末尾,每隔一段時(shí)間在后臺對AOF文件進(jìn)行重寫使AOF文件的體積不會(huì)超出保存數(shù)據(jù)所需實(shí)際大小

Redis還可以同時(shí)使用AOF和RDB,在這種情況下,當(dāng)Redis重啟后,它會(huì)優(yōu)先使用AOF文進(jìn)行數(shù)據(jù)還原,因?yàn)锳OF文件保存的數(shù)據(jù)通常比RDB保存的數(shù)據(jù)更完整,通常AOF和RDB協(xié)同工作,在一定程度上彌補(bǔ)了他們的缺點(diǎn)

RDB的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

1、文件緊湊,它保存了Redis在某個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)集,非常適合用于進(jìn)行備份 2、可以最大化Redis的性能,父進(jìn)程在保存RDB文件時(shí)唯一要做的就是fork出一個(gè)子進(jìn)程,然后這個(gè)子進(jìn)程就會(huì)處理接下來的所有持久化工作,父進(jìn)程無須執(zhí)行任何磁盤 I/O 操作

3、在恢復(fù)數(shù)據(jù)量比較大時(shí)速度比AOF的恢復(fù)速度快

缺點(diǎn):

1、無法實(shí)時(shí)備份,在服務(wù)器出現(xiàn)故障時(shí)可能會(huì)丟失部分?jǐn)?shù)據(jù)

2、由于使用子進(jìn)程進(jìn)行數(shù)據(jù)持久化,當(dāng)數(shù)據(jù)比較大的時(shí)候可能會(huì)占用比較多的cpu資源

3、每一次都是完整備份,而無法實(shí)現(xiàn)增量備份

AOF的優(yōu)缺點(diǎn):

優(yōu)點(diǎn):

1、實(shí)時(shí)的記錄了redis的寫操作,在服務(wù)器出現(xiàn)故障時(shí)基本不會(huì)造成數(shù)據(jù)丟失

2、在AOF文件體積過大時(shí),自動(dòng)地在后臺對AOF進(jìn)行重寫,重寫后的AOF文件包含了恢復(fù)數(shù)據(jù)所需的最小命令集

3、AOF以Redis協(xié)議的格式進(jìn)行保存,可讀性好,對文件進(jìn)行分析也很輕松

缺點(diǎn):

1、AOF文件的體積通常要大于RDB文件的體積

2、AOF的恢復(fù)速度通常慢于RDB


AOF文件的重寫過程:

AOF文件體積在達(dá)到一定程度時(shí)會(huì)在后臺啟動(dòng)AOF文件重寫功能通過fork打開一個(gè)子進(jìn)程,這個(gè)進(jìn)程器讀取整個(gè)redis的數(shù)據(jù)內(nèi)容,將他生成一個(gè)新的AOF文件,在AOF文件重寫是產(chǎn)生的寫操作記錄兩份,一份直接寫入的舊的AOF文件中,一份放入緩存區(qū),當(dāng)AOF文件重寫完成之后替換掉舊的AOF文件并將緩存區(qū)的寫操作追加到新的AOF文件中

復(fù)制特點(diǎn):

1、Redis使用異步非阻塞進(jìn)行復(fù)制

2、一主可以有多從,從服務(wù)器也可以有從服務(wù)器

3、可以通過復(fù)制讓主服務(wù)器免于不用持久化,由從服務(wù)器去執(zhí)行持久化操作(不建議這么使用)

復(fù)制過程:

1、slave向主服務(wù)器發(fā)起同步請求

                2、master執(zhí)行bgsave生成鏡像文件,在這個(gè)過程中產(chǎn)生的新數(shù)據(jù)會(huì)存入緩存區(qū),當(dāng)bgsave執(zhí)行完畢后生成一個(gè).rbd文件,master將.rbd文件和緩存區(qū)的數(shù)據(jù)發(fā)送給slave,slave收到master的數(shù)據(jù)后將這些數(shù)據(jù)存入本地硬盤,slave從本地硬盤中載入數(shù)據(jù)到內(nèi)存

3、即使有多個(gè)slave同時(shí)向主服務(wù)器發(fā)送同步請求,master也只需執(zhí)行一次bgsave


向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI