日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Redis 高级特性(3)—— 持久化及数据恢复

發布時間:2023/11/28 生活经验 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis 高级特性(3)—— 持久化及数据恢复 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 持久化概念

所謂持久化是指將數據從內存中以某種形式同步到硬盤中,在 redis 重啟后能夠根據硬盤中的記錄恢復數據。Redis 持久化有兩種方式,分別為 RDB 【快照】方式 和 AOF 【日志】方式。

1. RDB 【快照】方式

RDB 持久化是 Redis 的默認支持,無需進行配置。RDB 是指在指定的時間間隔內將內存中的數據集快照寫入磁盤。
當符合一定規則時,Redis 自動將內存中的所有數據生成一份副本并存儲到硬盤上。分為以下四種情況:

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

    SAVE  900 1 
    SAVE  300 10
    SAVE  60  1000
    

    SAVE 900 1 表示 900s 內有一個或一個以上的鍵被更改則進行快照配置文件中

  2. 用戶執行 SAVE 或 BGSAVE 命令

    (1) SAVE 命令

    Redis 會同步的進行快照操作,在快照執行過程中會阻塞所有來自客戶端請求。

    (2) BGSAVE 命令

    Redis 會在后臺異步地進行快照操作,在快照執行過程服務端可以繼續響應來自客戶端的請求.
    具體操作是 Redis 進程執行 fork 操作創建子進程,RDB 持久化過程由子進程負責,完成后自動結束。阻塞只發生在 fork 階段,一般時間很短。建議使用。

  3. 執行 FLUSHALL 命令

    只要快照配置條件不為空,執行該命令時就會執行一次快照操作;而當沒有定義快照條件時,即使執行該命令也不會執行快照操作

  4. 執行復制 replication

    即使沒有定義自動快照條件,且沒有手動執行過快照操作,進行復制操作時也會進行自動快照

2. AOF 【日志】方式

該機制將以日志的形式記錄服務器所處理的每一個寫操作,在 Redis 服務器啟動之初會讀取該文件來重新構建數據庫,以保證啟動后數據庫中的數據是完整的。

  1. 默認關閉,通過 appendonly yes 可開啟
  2. 開啟后,每執行一條更改數據庫中的命令時,Redis 都會將該命令寫入硬盤的 AOF 文件
  3. 達到一定條件時,Redis 會自動重寫 AOF 文件
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
  1. 啟動時 Redis 會逐個執行 AOF 文件中的命令將硬盤中的數據載入到內存中
  2. appendfsync everysec 通過配置文件中的該配置項,可使硬盤緩存中的數據每 1s 同步一次到真正的硬盤中

事實上由于操作系統緩存機制,數據并沒有真正寫入硬盤,而是進入系統硬盤緩存。

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

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

3. RDB 數據恢復

RDB 方式的持久化的數據恢復不需太多操作,只要將備份文件放入 Redis 的安裝目錄,啟動即可。Redis 會自動加載文件至內存。在加載過程中會一直處于阻塞狀態。

3.1 優勢:

  • 整個數據庫只包含一個備份文件。容易恢復和存儲。
  • 方便復制和轉移。
  • 相比于 AOF,數據集很大的情況下,RDB 的啟動效率更高。
  • 性能最大化。對于 Redis 的服務進程而言,在開始持久化時,它唯一需要做的只是 fork 出子進程,之后再由子進程完成這些持久化的工作,這樣就可以極大的避免服務進程執行操作。

3.2 劣勢:

  • 如果想最大限度避免數據丟失,RDB 不是一個好選擇,如果系統在持久化期間出現宕機,沒有寫入磁盤的數據都會丟失。
  • RDB 通過 fork 子進程來協助完成持久化,如果數據集較大,會導致服務器停止一些時間。

4. AOF 數據恢復

與 RDB 一樣,重啟 Redis,Redis 會自動加載 AOF 文件,實現數據恢復。

4.1 優勢

  • AOF 的數據安全性和同步性比 RDB 形式高。默認為每秒同步一次,如果設置為每操作同步一次,則數據會實現完全同步。
  • AOF 文件是通過追加的形式生成的。如果最后一次寫入出現異常也不會影響之前的文件數據。
  • AOF 文件具有清晰可讀的文件格式,如果我們錯誤的寫入了命令,可以立馬關閉,在重寫沒進行時,先進入文件中,去掉寫錯的命令。

4.2 劣勢

  • AOF 占用的空間比 RDB 大。
  • AOF 的同步速度比 RDB 慢。

5. 總結如何選擇

如果對數據的完整性要求不是極高,可以丟失一點數據,那選擇 RDB 是最好的。RDB 無論是備份方便性和恢復速度都高于 AOF,同時可以避免 AOF 的一些bug。

如果對數據的完整性要求極高,請選擇 AOF 形式。

總結

以上是生活随笔為你收集整理的Redis 高级特性(3)—— 持久化及数据恢复的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。