redis如何持久化

由于redis的數據都存放在內存中,如果沒有配置持久化,redis重啟后數據就全丟失了,于是需要開啟redis的持久化功能,將數據保存到磁 盤上,當redis重啟后,可以從磁盤中恢復數據。

redis如何持久化

redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內存中的數據庫記錄定時 dump到磁盤上的RDB持久化),另外一種是AOF(append only file)持久化(原理是將Reids的操作日志以追加的方式寫入文件)。

RDB:RDB持久化是把當前進程數據生成快照保存到硬盤的過程,觸發RDB持久化過程分為手動觸發和自動觸發。 ? (推薦學習:Redis視頻教程

觸發機制

手動觸發分別對應save和bgsave命令

save命令:阻塞當前Redis服務器,知道RDB過程完成為止,對于內存比較大的實例會造成長時間阻塞,線上不建議使用。

DB?saved?on?disk

bgseve命令:Redis進程執行fork操作創建子進程,RDB持久化過程有子進程負責,完成后自動結束。阻塞只發生在fork階段,一般時間很短。

*?Background?saving?started?by?pid?3151 *?DB?saved?on?disk *?RDB:?0?MB?of?memory?used?by?copy-on-write *?Background?saving?terminated?with?success

自動觸發

以下場景下會觸發

1)使用save相關配置,如“save m n”。表示m秒內數據集存在n次修改時,自動觸發bgsave。

2)如果從節點執行全量復制操作,主節點自動執行bgsave生成RDB文件并發送給從節點。

3)執行debug reload命令重新加載Redis時,也會自動觸發save操作。

4)默認情況下執行shutdown命令時,如果沒有開啟AOF持久化功能則自動執行bgsave。

AOF:以獨立日志的方式記錄每次寫命令,重啟時在重新執行AOF文件中的命令達到恢復數據的目的。主要作用:解決了數據持久化的實時性。

使用AOF

開啟AOF功能需要設置配置:appendonly yes,默認不開啟。文件名通過appendfilename配置設置,默認appendonly.aof。

redis如何持久化

1)所有的寫入命令會追加到aof_buf(緩沖區)中。

2)AOF緩沖區根據對應的策略向硬盤做同步操作。

3)隨著AOF文件越來越大,需要定期對AOF文件進行重寫,達到壓縮的目的。

4)當Redis服務器重啟時,可以加載AOF文件進行數據恢復。

更多Redis相關技術文章,請訪問Redis視頻教程欄目進行學習!

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享