redis的持久化(persistence)

一、關於redis的持久化

Redis的所有數據都是保存在內存中,然後不定期的通過異步方式保存到磁盤上(這稱爲“半持久化模式”);也可以把每一次數據變化都寫入到一個append only file(aof)裏面(這稱爲“全持久化模式”)。

由於Redis的數據都存放在內存中,如果沒有配置持久化,redis重啓後數據就全丟失了,於是需要開啓redis的持久化功能,將數據保存到磁 盤上,當redis重啓後,可以從磁盤中恢復數據。redis提供兩種方式進行持久化,一種是RDB持久化(原理是將Reids在內存中的數據庫記錄定時 dump到磁盤上的RDB持久化),另外一種是AOF(append only file)持久化(原理是將Reids的操作日誌以追加的方式寫入文件)。那麼這兩種持久化方式有什麼區別呢,改如何選擇呢?網上看了大多數都是介紹這兩 種方式怎麼配置,怎麼使用,就是沒有介紹二者的區別,在什麼應用場景下使用。

二、RDB和AOF的區別

RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是fork一個子進程,先將數據集寫入臨時文件,寫入成功後,再替換之前的文件,用二進制壓縮存儲。

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

三、 用途選擇

1、如不在意數據完整性則不需啓動AOF持久化,則默認使用RDB持久化。此時根據默認配置save參數最多丟失15分鐘的數據。

2、如在意數據完整性則啓動AOF持久化,此時打開客戶端會讀取AOF日誌文件而忽略RDB數據文件。不過建議兩個持久化同時開啓。此時根據默認配置everysec則最多丟失一秒數據。

3、如只做緩存,只希望數據在服務器運行時存在,則可以不使用任何持久化。怎麼關閉呢,在配置中更改:save ""和路徑dir裏的.rdb文件刪掉或者改個名字

四、配置

RDB持久化基本配置
# redis是基於內存的數據庫,可以通過設置該值定期寫入磁盤。
# 註釋掉“save”這一行配置項就可以讓保存數據庫功能失效
# 900秒(15分鐘)內至少1個key值改變(則進行數據庫保存--持久化) 
# 300秒(5分鐘)內至少10個key值改變(則進行數據庫保存--持久化) 
# 60秒(1分鐘)內至少10000個key值改變(則進行數據庫保存--持久化)
save 900 1
save 300 10
save 60 10000

#rdb文件的名稱
dbfilename dump.rdb
 
#數據目錄,數據庫的寫入會在這個目錄。rdb、aof文件也會寫在這個目錄
dir /var/lib/redis
AOF持久化基本配置
#默認redis使用的是rdb方式持久化,這種方式在許多應用中已經足夠用了。但是redis如果中途宕機,會導致可能有幾分鐘的數據丟失,根據save來策略進行持久化,Append Only File是另一種持久化方式,可以提供更好的持久化特性。Redis會把每次寫入的數據在接收後都寫入 appendonly.aof 文件,每次啓動時Redis都會先把這個文件的數據讀入內存裏,先忽略RDB文件。
appendonly no
 
#aof文件名
appendfilename "appendonly.aof"

#aof持久化策略的配置
#no表示不執行fsync,由操作系統保證數據同步到磁盤,速度最快。
#always表示每次寫入都執行fsync,以保證數據同步到磁盤。
#everysec表示每秒執行一次fsync,可能會導致丟失這1s數據。
appendfsync everysec

#aof自動重寫配置。當目前aof文件大小超過上一次重寫的aof文件大小的百分之多少進行重寫,即當aof文件增長到一定大小的時候Redis能夠調用bgrewriteaof對日誌文件進行重寫。當前AOF文件大小是上次日誌重寫得到AOF文件大小的二倍(設置爲100)時,自動啓動新的日誌重寫過程。
auto-aof-rewrite-percentage 100

#設置允許重寫的最小aof文件大小,避免了達到約定百分比但尺寸仍然很小的情況還要重寫
auto-aof-rewrite-min-size 64mb
文件修復

如:配置了aof-load-truncated no,則需手動

redis-check-aof --fix
redis-check-rdb --fix

在這裏插入圖片描述
介紹來自:https://www.cnblogs.com/AndyAo/p/8135980.html
redis手冊:http://redisdoc.com/persistence/index.html

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