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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

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

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

1. 持久化概念

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

1. RDB 【快照】方式

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

  1. 根據(jù)配置規(guī)則自動進(jìn)行快照

    SAVE  900 1 
    SAVE  300 10
    SAVE  60  1000
    

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

  2. 用戶執(zhí)行 SAVE 或 BGSAVE 命令

    (1) SAVE 命令

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

    (2) BGSAVE 命令

    Redis 會在后臺異步地進(jìn)行快照操作,在快照執(zhí)行過程服務(wù)端可以繼續(xù)響應(yīng)來自客戶端的請求.
    具體操作是 Redis 進(jìn)程執(zhí)行 fork 操作創(chuàng)建子進(jìn)程,RDB 持久化過程由子進(jìn)程負(fù)責(zé),完成后自動結(jié)束。阻塞只發(fā)生在 fork 階段,一般時間很短。建議使用。

  3. 執(zhí)行 FLUSHALL 命令

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

  4. 執(zhí)行復(fù)制 replication

    即使沒有定義自動快照條件,且沒有手動執(zhí)行過快照操作,進(jìn)行復(fù)制操作時也會進(jìn)行自動快照

2. AOF 【日志】方式

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

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

事實(shí)上由于操作系統(tǒng)緩存機(jī)制,數(shù)據(jù)并沒有真正寫入硬盤,而是進(jìn)入系統(tǒng)硬盤緩存。

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

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

3. RDB 數(shù)據(jù)恢復(fù)

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

3.1 優(yōu)勢:

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

3.2 劣勢:

  • 如果想最大限度避免數(shù)據(jù)丟失,RDB 不是一個好選擇,如果系統(tǒng)在持久化期間出現(xiàn)宕機(jī),沒有寫入磁盤的數(shù)據(jù)都會丟失。
  • RDB 通過 fork 子進(jìn)程來協(xié)助完成持久化,如果數(shù)據(jù)集較大,會導(dǎo)致服務(wù)器停止一些時間。

4. AOF 數(shù)據(jù)恢復(fù)

與 RDB 一樣,重啟 Redis,Redis 會自動加載 AOF 文件,實(shí)現(xiàn)數(shù)據(jù)恢復(fù)。

4.1 優(yōu)勢

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

4.2 劣勢

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

5. 總結(jié)如何選擇

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

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。