Redis持久化機制RDB 和AOF

redis持久化機制

redis服務器宕機,內存數據是會丟失了,爲了保證數據不丟失需要對數據做備份,所備份就是持久化,Redis的持久化即將內存中的數據同步到硬盤,主要包括兩種方式RDB、AOF。

RDB持久化機制,(默認使用):做當前內存數據的全本快照,
將內存中的數據以快照的方式寫入到二進制文件dump.rdb,
在redis.conf中可以設置發起快照保存的條件。在指定的時間內如果有超過指定數量的key被修改,則會發起快照保存。

這種方式在數據的實時性上不高,在突然斷電的情況下,可能會出現部分數據的丟失,即最後一次快照之後在內存中發生修改的數據。

簡單來說:RDB就是將redis上的所有數據做個備份,存儲的是二進制的數據。

AOF持久化機制,(默認是關閉)

AOF是將Redis內存數據庫中更改的數據都記錄到指定的文件appendonly.aof。在redis.conf中可以進行寫磁盤的相關設置。

在突然斷電的情況下,由於在appendonly.aof中保存了最後一次寫磁盤之後redis內存發生數據修改的指令,所以在這個Redis重啓後,基本不會發生數據丟失,比RDB具有更好的數據安全性。

appendfsync always 接收到更改數據的命令,立即將其記錄到appendonly.aof中,能保證數據持久化,數據完全不丟失,但效率相對最低。

appendfsync everysec 每秒鐘將redis內存數據修改的命令記錄到appendonly.aof中,在性能和持久化上做了折中。因頻繁執行磁盤操作,在僅存在單個Master執行寫操作時,效率可能存在問題。但在多個Master執行寫操作的Redis集羣中,效率會提升。

appendfsync no 依賴於操作系統,因不會頻繁執行磁盤操作而性能最好,但redis內存數據修改持久化沒有保證,無法保證數據可靠性

如何開啓AOF持久化:
將redis.conf文件中 appendonly 改成 yes ,自動創建appendonly.aof,該文件存儲的客戶端執行過增刪改操作的命令
在這裏插入圖片描述

什麼是AOF重寫?

當命令存儲了一定程度的時候,有一些命令可能是已經無效的了
例如set usernname xx del usename,添加一條數據,後又刪除,所以這兩條命令備份的備份的時候就都是無效的
所有redis會對AOF文件進行優化,把一些沒有對於數據恢復沒有意義的命令優化掉
默認AOF是關閉的,需要在redis.conf中進行開啓
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章