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