Redis持久化之RDB

一、是什麼

在指定的時間內將內存中的數據集快照寫入磁盤,也就是Snapshot快照,它恢復時是將快照文件直接讀到內存中。
Redis會單獨創建(fork)一個子進程來進行持久化,會先將數據寫入到一個臨時文件中,待持久化過程都結束,再用這個臨時文件替換上次持久化的文件,整個過程中,主進程時不進行任何IO操作的,這就是確保了極高的性能,如果需要進行大規模數據的恢復,且對於數據的完整性不是非常敏感,那RDB方式比AOF方式更加高效,RDB的缺點是最後一次持久化的數據可能丟失。

二、Fork

Fork的作用是複製一個與當前進程一樣的進程。新進程的所有數據(變量、環境變量、程序計數器等)數值都與原進程一致,但是是一個全新的進程,並作爲原進程的子進程。

三、dump.rdb文件

  • 配置
    clipboard.png
    這是我的配置路徑
  • 如何觸發RDB快照

    save 900 1 // 900秒內有1次改動,則持久化一次
    save 300 10 // 300秒內有10次改動,則持久化一次
    save 60 10000 // 60秒內有10000次改動,則持久化一次
    

    以上三個任意滿足一個條件即可

    save 或bgsave命令
    執行flushall命令也會產生rdb文件,不過是空的,無意義

四、優勢與劣勢

  • 優勢
    適合大規模的數據恢復
    對數據完整性和一致性要求不高
  • 劣勢
    在一定間隔時間做一次備份,所以如果redis意外down的話,就會丟失最後一次快照後的所有修改。
    Fork的時候,內存中的數據被克隆了一份,大致2倍的膨脹性需要考慮。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章