溫馨提示×

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

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

Redis中的兩種持久化方式是什么

發(fā)布時(shí)間:2021-10-25 13:42:35 來(lái)源:億速云 閱讀:171 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇內(nèi)容主要講解“Redis中的兩種持久化方式是什么”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Redis中的兩種持久化方式是什么”吧!

Redis中的兩種持久化方式是什么

Redis的兩種持久化方式

眾所周知,Redis中提供了AOF,RDB兩種持久化,下面先來(lái)簡(jiǎn)單回顧一下。

RDB持久化

  • RDB持久化,就是把當(dāng)前時(shí)間點(diǎn)的數(shù)據(jù)庫(kù)的狀態(tài)保存到磁盤(pán)中,又稱(chēng)快照持久化。

  • RDB可以手動(dòng)觸發(fā),也可以根據(jù)服務(wù)器配置定期執(zhí)行。

  • RDB生成的文件,是一個(gè)經(jīng)過(guò)壓縮的二進(jìn)制文件,數(shù)據(jù)庫(kù)可以通過(guò)該文件還原到該時(shí)間點(diǎn)的狀態(tài)。

  • Redis提供前臺(tái)RDB持久化命令SAVE和后臺(tái)RDB持久化命令BGSAVE,前臺(tái)執(zhí)行時(shí),Redis的其他命令會(huì)被阻塞,而后臺(tái)執(zhí)行時(shí),Redis還可以繼續(xù)處理客戶端的命令請(qǐng)求。

  • RDB二進(jìn)制文件中,保存的是鍵值對(duì)數(shù)據(jù),采用經(jīng)過(guò)壓縮的自定義編碼,帶校驗(yàn)。通過(guò)od命令可以轉(zhuǎn)化為可讀。

  • 主從復(fù)制時(shí),初始化的全量復(fù)制采用RDB文件。

【相關(guān)推薦:Redis視頻教程】

AOF持久化

  • AOF持久化,全稱(chēng)是Appen Only File,意思是追加的持久化方式,其中保存的是寫(xiě)命令,而非數(shù)據(jù)。

  • AOF持久化過(guò)程分為命令追加、文件寫(xiě)入、文件同步三個(gè)步驟。

  • 命令追加:Redis服務(wù)端每執(zhí)行完一個(gè)寫(xiě)命令,都會(huì)以AOF協(xié)議格式將該寫(xiě)命令追加到服務(wù)器狀態(tài)的aof_buf緩沖區(qū)末尾。

  • 文件寫(xiě)入:Redis中,每結(jié)束一個(gè)事件循環(huán)之前,都會(huì)調(diào)用flushAppendOnlyFile函數(shù),將aof_buf緩沖區(qū)中的內(nèi)容寫(xiě)入到AOF文件。

  • 文件同步:同步sync指的是文件寫(xiě)入到操作系統(tǒng)緩沖區(qū)中時(shí),是否直接同步到磁盤(pán)中。通過(guò)配置,可以選擇立即同步、每秒同步、不主動(dòng)同步而由操作系統(tǒng)控制,這三種同步方式。關(guān)于文件I/O緩沖:https://www.litreily.top/2018/10/25/io-cache/

  • Redis優(yōu)先使用AOF文件來(lái)恢復(fù)數(shù)據(jù)。

  • AOF文件由于存儲(chǔ)命令,且沒(méi)有經(jīng)過(guò)壓縮,其體積要大于RDB文件。

  • AOF文件可以定期采用BGREWRITEAOF重寫(xiě),減少重復(fù)命令、已失效命令,合并命令等。

  • AOF文件支持后臺(tái)重寫(xiě),采用fork子進(jìn)程的形式實(shí)現(xiàn)。子進(jìn)程帶有服務(wù)器進(jìn)程的數(shù)據(jù)副本,再避免使用鎖的情況下保證數(shù)據(jù)安全性。另外也采用AOF重寫(xiě)緩沖區(qū)解決了數(shù)據(jù)不一致。

兩種持久化分別的優(yōu)缺點(diǎn)

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

  • 文件體積小,適合拷貝做冷備

  • 相比AOF,備份恢復(fù)速度更快

RDB的缺點(diǎn)

  • 丟失數(shù)據(jù)多

  • fork子進(jìn)程來(lái)做BGSAVE,消耗一定的內(nèi)存資源

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

  • 丟失數(shù)據(jù)少

  • 增加了寫(xiě)緩沖區(qū),無(wú)需尋址,速度快

  • append-only,也無(wú)需做磁盤(pán)尋址,效率高

AOF的缺點(diǎn)

  • 文件體積大

  • AOF每次都需要做一下寫(xiě)入aof_buf的操作,開(kāi)啟AOF持久化后,QPS會(huì)略微降低

Redis為什么需要兩種持久化?

經(jīng)過(guò)上面的回顧,我們可以看到,RDB與AOF持久化有明顯區(qū)別。

  • 存儲(chǔ)的內(nèi)容:RDB存儲(chǔ)某一時(shí)間點(diǎn)的數(shù)據(jù);AOF存儲(chǔ)執(zhí)行的寫(xiě)命令。

  • 文件大?。篟DB文件較??;AOF文件較大。

  • 寫(xiě)入方式:RDB可采用前臺(tái)/后臺(tái)寫(xiě)入方式;AOF采用每次執(zhí)行寫(xiě)命令,都將命令存入緩沖區(qū)的方式,另外可定期重寫(xiě)。

  • 數(shù)據(jù)丟失:RDB丟失從宕機(jī)到上一次RDB同步之間的所有數(shù)據(jù);AOF根據(jù)I/O緩沖區(qū)所配置的刷新方式,不丟失或丟失1s或幾秒的數(shù)據(jù)。

根據(jù)這些對(duì)比,可以看到RDB持久化更適合保存一個(gè)時(shí)間點(diǎn)的數(shù)據(jù),在主從復(fù)制或者數(shù)據(jù)全量異地災(zāi)備時(shí),拷貝到其他地方,而AOF持久化由于丟失數(shù)據(jù)較少,比較適合作為本地備份,在Reids掛掉重啟時(shí)作為故障恢復(fù)。這就是我理解的為什么Redis需要兩種持久化方式。

到此,相信大家對(duì)“Redis中的兩種持久化方式是什么”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!

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

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

AI