Redis的持久化机制-RDB方式和AOF方式
場景
Redis的持久化策略
持久化可以理解為存儲(chǔ),就是將數(shù)據(jù)存儲(chǔ)到一個(gè)不會(huì)丟失的地方。
如果把數(shù)據(jù)存儲(chǔ)在內(nèi)存中,電腦關(guān)閉或者重啟數(shù)據(jù)就會(huì)丟失,所以放在內(nèi)存中的數(shù)據(jù)不是持久化的,而放在磁盤中就算是一種持久化。
Redis的數(shù)據(jù)存儲(chǔ)在內(nèi)存中,內(nèi)存是瞬時(shí)的,如果linux宕機(jī)或者重啟,又或者Redis崩潰或者重啟,
所有的內(nèi)存中數(shù)據(jù)就會(huì)丟失,為解決這個(gè)問題,Redis提供了兩種機(jī)制對數(shù)據(jù)進(jìn)行持久化存儲(chǔ),便于發(fā)生故障后能迅速恢復(fù)數(shù)據(jù)。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關(guān)注公眾號(hào)
霸道的程序猿
獲取編程相關(guān)電子書、教程推送與免費(fèi)下載。
RDB方式
RedisDatabase(RDB),就是在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,數(shù)據(jù)恢復(fù)時(shí)將快照文件直接再讀到內(nèi)存。
RDB保存了在某個(gè)時(shí)間點(diǎn)的數(shù)據(jù)集(全部數(shù)據(jù))。存儲(chǔ)在一個(gè)二進(jìn)制文件中,只有一個(gè)文件,默認(rèn)是dump.rdb。
RDB技術(shù)非常適合做備份,可以保存最近一個(gè)小時(shí),一天,一個(gè)月的全部數(shù)據(jù)。保存數(shù)據(jù)是在單獨(dú)的進(jìn)程中寫文件,
不影響Redis的正常使用,RDB恢復(fù)數(shù)據(jù)時(shí)比其他AOF速度快。
RDB方式配置實(shí)現(xiàn)
RDB方式的持久化,僅需在redis.conf文件中配置即可,默認(rèn)配置是啟用的。
Centos中Redis的下載編譯與安裝(超詳細(xì)):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334
Redis的啟動(dòng)和關(guān)閉(前臺(tái)啟動(dòng)和后臺(tái)啟動(dòng)):
https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103972348
根據(jù)上面兩篇博客來到Redis安裝路徑下配置文件redis-conf文件的位置,可以看到dump.rdb文件
?
然后對redis.conf配置文件進(jìn)行編輯
?
然后往下找到SNAPSHOTTING,查找在注釋開始和結(jié)束之間的關(guān)于RDB的配置說明。
1.配置執(zhí)行RDB生成快照文件的時(shí)間策略。
對Redis進(jìn)行設(shè)置,讓它在"N秒鐘內(nèi)數(shù)據(jù)集至少有M個(gè)key改動(dòng)"這一條件被滿足時(shí),自動(dòng)保存一次數(shù)據(jù)集。
?
這里的默認(rèn)配置
save 900 1
save 300 10
save 60 10000
就是說在900秒內(nèi)有1個(gè)key被改動(dòng),300秒內(nèi)有10個(gè)key被改動(dòng),60秒內(nèi)有10000個(gè)key被改動(dòng)。
2.dbfilename:設(shè)置RDB的文件名,默認(rèn)文件名dump.rdb
?
3.dir :指定RDB文件的存儲(chǔ)位置,默認(rèn)是./ 當(dāng)前目錄
?
RDB方式總結(jié)
優(yōu)點(diǎn):
由于存儲(chǔ)的是數(shù)據(jù)快照文件,恢復(fù)數(shù)據(jù)很方便,也比較快。
缺點(diǎn):
1.會(huì)丟失最后一次快照以后更改的數(shù)據(jù),如果你的應(yīng)用能容忍一定數(shù)據(jù)的丟失,那么使用rdb
是不錯(cuò)的選擇;如果你不能容忍一定數(shù)據(jù)的丟失,使用rdb就不是一個(gè)很好的選擇。
2.由于需要經(jīng)常操作磁盤,RDB會(huì)分出一個(gè)子進(jìn)程。如果你的redis數(shù)據(jù)庫很大的話,子進(jìn)程占用比較多的時(shí)間,并且可能會(huì)
影響Redis暫停服務(wù)一段時(shí)間(毫秒級別),如果你的數(shù)據(jù)庫超級大并且你的服務(wù)器的CPU比較弱,有可能會(huì)達(dá)到一秒。
AOF方式
Append-onlyFile(AOF),Redis每次接收到一條改變數(shù)據(jù)的命令時(shí),它將把該命令寫到一個(gè)
AOF文件中(只記錄寫操作,不記錄讀記錄),當(dāng)Redis重啟時(shí),它通過執(zhí)行AOF文件中所有的命令來恢復(fù)數(shù)據(jù)。
AOF的數(shù)據(jù)持久化,僅需在redis.conf中配置即可。
配置項(xiàng):
1.appendonly:默認(rèn)是no,改為yes即開啟了AOF持久化。
2.appendfilename :指定AOF文件名,默認(rèn)文件名是appendonly.aof。
3.dir:指定RDB和AOF文件存放的位置。
4.appendfsync:配置向aof文件寫命令數(shù)據(jù)的策略:
no:不主動(dòng)進(jìn)行同步操作,而是完全交由操作系統(tǒng)來做(即每30秒一次),比較快但不是很安全。
always:每次執(zhí)行寫入都會(huì)執(zhí)行同步,慢一些但是比較安全。
everysec:沒秒執(zhí)行一次同步操作,比較平衡,介于速度與安全之間,這就是默認(rèn)項(xiàng)。
與50位技術(shù)專家面對面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的Redis的持久化机制-RDB方式和AOF方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis事务中的watch机制-从实例
- 下一篇: 'keytool' 不是内部或外部命令,