首頁 >資料庫 >Redis >redis如何持久化

redis如何持久化

(*-*)浩
(*-*)浩原創
2019-11-26 09:59:514290瀏覽

由於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

redis如何持久化自動觸發

以下場景下會觸發


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。 ###############1)所有的寫入指令會追加到aof_buf(緩衝區)。 ######2)AOF緩衝區根據對應的策略向硬碟做同步操作。 #########3)隨著AOF檔案越來越大,需要定期對AOF檔案進行重寫,以達到壓縮的目的。 #########4)當Redis伺服器重新啟動時,可以載入AOF檔進行資料恢復。 ######更多Redis相關技術文章,請造訪###Redis入門教學###欄位學習! ###

以上是redis如何持久化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn