redis怎么持久化數據

redis被稱為是內存數據庫,那是因為它會將其所有數據存儲在內存里,因此redis具有強勁的速度性能,但是,也正因為數據存儲在內存中,當redis重啟后,所有存儲在內存的數據就會丟失。為了使得數據持久化,redis提供了兩種方式:rdb方式和aof方式。

redis怎么持久化數據

一、RDB方式

RDB方式的持久化是通過快照(snapshotting)完成的,當符合一定條件時,Redis會自動將內存中所有的數據生成一份副本并存儲在硬盤中,這個過程被稱為“快照”。“快照”,就類似于拍照,摁下快門那一刻,所定格的照片,就稱為“快照”。

Redis有4種情況會對數據進行快照:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (推薦學習:Redis視頻教程

根據配置規則進行自動快照;

用戶執行SAVE或BGSAVE命令;

執行FLUSHALL命令;

執行復制(replication)時。

二、AOF方式

通過RDB方式實現持久化,一旦Redis異常退出,就會丟失最后一次快照之后更改的所有數據。為了降低因進程中止導致的數據丟失風險,可以使用AOF方式實現數據持久化。

AOF持久化是以日志的形式記錄服務器所處理的每一個寫、刪除操作,查詢操作不會記錄,以文本的方式記錄,文件中可以看到詳細的操作記錄。

她的出現是為了彌補RDB的不足(數據的不一致性),所以它采用日志的形式來記錄每個寫操作,并追加到文件中。Redis 重啟的會根據日志文件的內容將寫指令從前到后執行一次以完成數據的恢復工作。

?默認情況下,Redis是沒有開啟AOF方式的持久化,可以通過appendonly參數啟動:appendonly yes

開啟AOF持久化后,每執行一條會更改Redis中數據的命令,Redis就會將該命令寫入硬盤中的AOF格式的文件,即.aof格式文件存儲的是一些redis指令。

這個時候就要注意,當頻繁操作Redis中的數據時,AOF格式文件所占內存就會越來越大,而且會有很多沒用的指令,如連續執行set foo 1,set foo 2,set foo 3。

那么前兩條指令是沒有意義的,Redis很強大,它會自動將沒有意義的指令刪除,即每當達到一定條件時,Redis就會自動重寫AOF文件,而這個條件可以在配置文件中設置。重寫的過程只和內存數據有關,和之前的AOF文件無關,這點跟RDB相似。

在同步硬盤數據數據時,由于操作系統的緩存機制,數據并沒有真正地寫入到硬盤中,而是進入到系統的硬盤緩存。在默認的情況下,系統每個30秒會執行一次同步操作,在這30秒的過程中,如果系統異常退出,那么會導致硬盤內存中的數據丟失。

Redis允許同時開啟RDB和AOF方式,既保證了數據安全,又使得備份操作十分容易。AOF可以有效降低數據丟失的可能性,RDB可以使得數據備份容易達到。

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