溫馨提示×

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

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

redis的持久化方式怎么使用

發(fā)布時(shí)間:2021-12-23 15:58:53 來(lái)源:億速云 閱讀:120 作者:iii 欄目:云計(jì)算

這篇文章主要介紹“redis的持久化方式怎么使用”,在日常操作中,相信很多人在redis的持久化方式怎么使用問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”redis的持久化方式怎么使用”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

  redis支持兩種持久化的方式,可以單獨(dú)使用或者結(jié)合起來(lái)使用

     一、RDB

     rdb方式的持久化是通過(guò)快照完成的,當(dāng)符合一定條件時(shí)redis會(huì)自動(dòng)將內(nèi)存中的所有數(shù)據(jù)執(zhí)行快照操作并存儲(chǔ)到硬盤(pán)上。默認(rèn)存儲(chǔ)在redis根目錄的dump.rdb文件中。(文件名在配置文件中dbfilename)

redis進(jìn)行快照的時(shí)機(jī)(在配置文件redis.conf中)

save 900 1:表示900秒內(nèi)至少一個(gè)鍵被更改則進(jìn)行快照。

save 300 10

save 60 10000

redis自動(dòng)實(shí)現(xiàn)快照的過(guò)程

    1:redis使用fork函數(shù)復(fù)制一份當(dāng)前進(jìn)程的副本(子進(jìn)程)

 2:父進(jìn)程繼續(xù)接收并處理客戶端發(fā)來(lái)的命令,而子進(jìn)程開(kāi)始將內(nèi)存中的數(shù)據(jù)寫(xiě)入硬盤(pán)中的臨時(shí)文件

 3:當(dāng)子進(jìn)程寫(xiě)入完所有數(shù)據(jù)后會(huì)用該臨時(shí)文件替換舊的RDB文件,至此,一次快照操作完成。  

 注意:redis在進(jìn)行快照的過(guò)程中不會(huì)修改RDB文件,只有快照結(jié)束后才會(huì)將舊的文件替換成新的,也就是說(shuō)任何時(shí)候RDB文件都是完整的。 這就使得我們可以通過(guò)定時(shí)備份RDB文件來(lái)實(shí)現(xiàn)redis數(shù)據(jù)庫(kù)的備份, RDB文件是經(jīng)過(guò)壓縮的二進(jìn)制文件,占用的空間會(huì)小于內(nèi)存中的數(shù)據(jù),更加利于傳輸。

手動(dòng)執(zhí)行save或者bgsave命令讓redis執(zhí)行快照。

兩個(gè)命令的區(qū)別在于,save是由主進(jìn)程進(jìn)行快照操作,會(huì)阻塞其它請(qǐng)求。bgsave是由redis執(zhí)行fork函數(shù)復(fù)制出一個(gè)子進(jìn)程來(lái)進(jìn)行快照操作。

文件修復(fù):redis-check-dump

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

優(yōu)點(diǎn):由于存儲(chǔ)的有數(shù)據(jù)快照文件,恢復(fù)數(shù)據(jù)很方便。

缺點(diǎn):會(huì)丟失最后一次快照以后更改的所有數(shù)據(jù)。

二、AOF

     aof方式的持久化是通過(guò)日志文件的方式。默認(rèn)情況下redis沒(méi)有開(kāi)啟aof,可以通過(guò)參數(shù)appendonly參數(shù)開(kāi)啟。

  appendonly yes

 aof文件的保存位置和rdb文件的位置相同,都是dir參數(shù)設(shè)置的,默認(rèn)的文件名是appendonly.aof,可以通過(guò)      appendfilename參數(shù)修改

   appendfilename appendonly.aof

 redis寫(xiě)命令同步的時(shí)機(jī)

 a ppendfsync always 每次都會(huì)執(zhí)行

 appendfsync everysec 默認(rèn) 每秒執(zhí)行一次同步操作(推薦,默認(rèn))

 appendfsync no不主動(dòng)進(jìn)行同步,由操作系統(tǒng)來(lái)做,30秒一次

  aof日志文件重寫(xiě)

 auto-aof-rewrite-percentage 100(當(dāng)目前aof文件大小超過(guò)上一次重寫(xiě)時(shí)的aof文件大小的百分之多少時(shí)會(huì)再次進(jìn)行重寫(xiě),如果之前沒(méi)有重寫(xiě),則以啟動(dòng)時(shí)的aof文件大小為依據(jù))

 auto-aof-rewrite-min-size 64mb

  手動(dòng)執(zhí)行bgrewriteaof進(jìn)行重寫(xiě)

 重寫(xiě)的過(guò)程只和內(nèi)存中的數(shù)據(jù)有關(guān),和之前的aof文件無(wú)關(guān)。 所謂的“重寫(xiě)”其實(shí)是一個(gè)有歧義的詞語(yǔ), 實(shí)際上, AOF 重寫(xiě)并不需要對(duì)原有的 AOF 文件進(jìn)行任何寫(xiě)入和讀取, 它針對(duì)的是數(shù)據(jù)庫(kù)中鍵的當(dāng)前值。

  文件修復(fù):redis-check-aof

     動(dòng)態(tài)切換redis持久方式,從 RDB 切換到 AOF(支持Redis 2.2及以上)

    CONFIG SET appendonly yes
    CONFIG SET save ""(可選)

     注意:當(dāng)redis啟動(dòng)時(shí),如果rdb持久化和aof持久化都打開(kāi)了,那么程序會(huì)優(yōu)先使用aof方式來(lái)恢復(fù)數(shù)據(jù)集,因?yàn)閍of方式所保存的數(shù)據(jù)通常是最完整的。如果aof文件丟失了,則啟動(dòng)之后數(shù)據(jù)庫(kù)內(nèi)容為空。

 注意:如果想把正在運(yùn)行的redis數(shù)據(jù)庫(kù),從RDB切換到AOF,建議先使用動(dòng)態(tài)切換方式,再修改配置文件,重啟數(shù)據(jù)庫(kù)。(不能直接修改配置文件,重啟數(shù)據(jù)庫(kù),否則數(shù)據(jù)庫(kù)中數(shù)據(jù)就為空了。)

到此,關(guān)于“redis的持久化方式怎么使用”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向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