Redis 持久化詳解

       Redis作爲內存數據庫,當斷電或redis宕機狀況下,會造成內存中數據丟失。因此Redis也有自己持久化機制,即RDB、AOF方式對Redis數據做持久化。

1、RDB

       RDB爲Redis默認持久化機制,是將內存中數據集快速寫入到磁盤,記錄內存快照。當發生宕機重啓Redis,數據會從文件中重新讀到內存中。

# save ""
save 900 1       如果900秒有超過1個key發生變化,則往磁盤寫入
save 300 10      如果300秒有超過10個key發生變化,則往磁盤寫入
save 60 10000    如果60秒有超過10000key發生變化,則往磁盤寫入

RDB方式默認情況下是開啓的,如果要關閉可以打開save "" 註釋

2、AOF

        AOF方式通過將Redis寫操作日誌保存起來,Redis宕機重啓時,將日誌文件中的命令按順序執行一遍,達到數據恢復目的。默認情況下它是關閉的,需要我們去配置。

appendonly no //默認是關閉的,開啓需要設置yes
appendfilename "appendonly.aof" //生成aof文件名

#appendfsync allawysec //每接受一次redis寫命令,往磁盤中寫一次,操作頻繁
appendfsync everysec   //1秒寫一次
#appendfsync no        //完全依賴os,數據一致性沒保障

no-appendfsync-on-rewirte no

auto-aof-rewirte-percentage 100 //aof重寫機制,當aof文件容量達到64m時,開始重寫aof文件
auto-aof-rewirte-size 64m

       AOF方式通過追加寫日誌方式做的持久化,這造成aof文件會越變越大,所以AOF也有自己的一套重寫機制,父進程來完成Redis客戶端寫操作並且將寫操作緩存起來,而子進程則對Redis內存進行寫入臨時文件,然後父進程調用子進程將兩者寫操作記錄到臨時文件,即使子進程失敗,也能達到記錄寫操作目的,最後父進程再去替換aof文件,這樣就達到aof文件壓縮目的。

3、RDB與AOF比較

     1、RDB方式持久化速度大於AOF方式,AOF記錄每一步寫操作,對性能影響比較大;

     2、RDB方式數據一致性差;

     3、AOF文件隨着寫日誌記錄,越來越龐大,一旦Redis宕機重啓時間消耗比較長。選用RDB重啓時間比較短;

     4、一般而言,做Redis持久化,RDB和AOF是同時開啓的,互補兩者之間的不足。

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