Redis 7.x 系列【17】四種持久化策略

有道無術,術尚可求,有術無道,止于術。

本系列Redis 版本 7.2.5

源碼地址:https://gitee.com/pearl-organization/study-redis-demo

文章目錄

    • 1. 概述
    • 2. 案例演示
      • 2.1 無持久化
      • 2.2 RDB
      • 2.3 AOF
      • 2.4 混合模式
        • 2.4.1 方式一: 同時開啟
        • 2.4.2 方式二: 只開啟 AOF

1. 概述

持久化官方文檔

在前兩篇文檔中,我們學習了RDBAOF的相關知識,它們各有優缺點。在實際應用中,需要根據場景選擇適合的持久化策略。

Redis 支持以下四種方式:

  • 無持久化:同時關閉RDBAOF
  • RDB:只開啟RDB
  • AOF:只開啟AOF
  • 混合模式:同時支持RDBAOF

2. 案例演示

2.1 無持久化

適用于以下場景:

  • 緩存層:作為數據庫查詢緩存時,如果數據丟失,可以重新獲取并填充到緩存中,持久化不是必需的。
  • 實時分析:在實時數據流處理或分析中,Redis 可能被用作一個中間存儲層,用于聚合、過濾或轉換數據。由于這些數據通常是實時生成的,并且只在一段時間內需要,因此可能不需要持久化。一旦分析完成或數據過期,它們就可以被丟棄。
  • 臨時存儲:在某些應用中,Redis 可能被用作臨時存儲來存儲會話數據、臨時令牌或其他短生命周期的信息。由于這些數據本質上是臨時的,并且在一段時間后會被丟棄或失效,因此可能不需要持久化。

redis.conf中同時關閉RDBAOF

save ""
appendonly no

注意,關閉后是依然可以使用savebgsavebgrewriteaof命令生成文件。

默認啟用RDB,所以在安裝目錄可以看到 dump.rdb 文件:

在這里插入圖片描述

dump.rdb 文件刪除,然后啟動 Redis ,雖然之前存入了數據,但是因為沒有恢復文件,所以數據庫是空:

在這里插入圖片描述
重新存入數據后,由于禁用了 RDB ,所以不會生成dump.rdb 文件,一旦重新啟,所有數據將會丟失。

2.2 RDB

Redis 默認啟用RDB持久化,只生成單個二進制文件,比AOF性能更好,但是可能會存在數據丟失問題。Redis 本身是十分穩定的,適用于對數據一致性要求不是特別高的場景:

  • 主從復制Redis主從復制架構中,RDB被用作數據同步的一種機制。主節點可以生成RDB文件,然后發送給從節點,用于初次全量復制或連接重建時的快速同步。
  • 恢復和備份RDB 文件是一個緊湊的二進制文件,可以很方便地進行備份、傳輸和恢復。
  • 緩存層:作為數據庫緩存時,如果數據丟失,可以重新獲取并填充到緩存中。

redis.conf中開啟RDB

# 關閉
# save "" 
# 開啟,每隔600秒(10分鐘)檢查一次,如果在這段時間內至少發生了10次寫操作,則執行一次RDB快照保存
save 600 10

存入數據后,關閉Redis 時,會觸發生成RDB 文件。重啟時會重新加載到內存中。執行多次寫入操作,可以看到觸發了保存規則,開啟了子線程進行RDB生成:

在這里插入圖片描述
總結:可以接受在災難情況下丟失幾分鐘的數據。

2.3 AOF

AOF 相較于 RDB 其主要缺點就是性能不如 RDB ,適用于數據一致性要求較高的場景。默認情況下是關閉的,需要在redis.conf中主動開啟:

# 關閉 RDB
save "" 
# 開啟AOF
appendonly yes

重啟 Redis 后,在控制臺可以看到創建了AOF 的基礎文件和增量文件:
在這里插入圖片描述
appendonlydir (默認存儲目錄)下可以看到相關文件:
在這里插入圖片描述

2.4 混合模式

RDBAOF 各有特點,在技術選型時是一個權衡點,其特點對比如下:

RDBAOF
持久化機制定期保存快照實時命令追加
文件大小二進制文件,體積較小文本、二進制文件,體積較大
恢復速度原生壓縮數據,速度快寫命令數據,相對較慢
容災能力數據可能有丟失數據可能有丟失(最后一條命令或最后一秒)
使用場景定期備份、大規模數據恢復低/輕量級
資源消耗高/重量級數據丟失容忍度低
啟動優先級

在官方文檔中,有提到如果想要獲得與 PostgreSQL 級別的數據安全性,應該同時使用兩種持久化方式。
在這里插入圖片描述

2.4.1 方式一: 同時開啟

在配置文件中同時開啟RDBAOF持久化:

# 開啟RDB
save 600 10
# 開啟AOF
appendonly yes

當觸發了規則后,會同時生成RDBAOF文件:

在這里插入圖片描述
同時開啟的條件下,重啟時會優先讀取AOF文件:

在這里插入圖片描述
這種方式下,同時維護兩套持久化機制,對性能會造成一定的影響。

2.4.2 方式二: 只開啟 AOF

AOF 本身已經提供了混合持久化機制,在Redis 7.x 系列【16】持久化機制之 AOF中有介紹過一個配置參數:

aof-use-rdb-preamble yes

Redis 6 中,開啟此配置后(默認開啟),重寫 的AOF 文件由兩個不同的部分組成:

  • RDB file:數據快照
  • AOF tail:記錄寫操作

在重啟加載過程中,Redis 會識別 AOF 文件以 “REDIS” 字符串開頭,并加載 RDB 快照數據,然后繼續加載 AOF 相關的內容,以實現更快的重寫和恢復速度。

Redis 7 中,開啟此配置后(默認開啟),在 AOF 重寫時,會將當前時刻的數據快照保存為單個的 RDB 文件,后續的寫操作也保存為單獨的 AOF 文件:

在這里插入圖片描述
在全量備份時,這里的 RDB 文件可以作為恢復文件,無需再單獨執行 BGSAVE 命令,由于是在觸發重寫后才會更新文件,可能會丟失重寫后的數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/39992.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/39992.shtml
英文地址,請注明出處:http://en.pswp.cn/web/39992.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

線性代數|機器學習-P21概率定義和Markov不等式

文章目錄 1. 樣本期望和方差1.1 樣本期望 E ( X ) \mathrm{E}(X) E(X)1.2 樣本期望 D ( X ) \mathrm{D}(X) D(X) 2. Markov 不等式&Chebyshev不等式2.1 Markov不等式公式 概述2.2 Markov不等式公式 證明:2.3 Markov不等式公式 舉例:2.4 Chebyshev不…

AI繪畫 Stable Diffusion圖像的臉部細節控制——采樣器全解析

大家好,我是畫畫的小強 我們在運用AI繪畫 Stable Diffusion 這一功能強大的AI繪圖工具時,我們往往會發現自己對提示詞的使用還不夠充分。在這種情形下,我們應當如何調整自己的策略,以便更加精確、全面地塑造出理想的人物形象呢&a…

域環境提權

域內提權漏洞(1) Netlogon域權限提升 1.查看域控主機名稱 net group "domain controllers" /domain 2.檢測漏洞是否存在 https://github.com/SecuraBV/CVE-2020-1472.git python zerologon_tester.py OWA 192.168.52.138 3.漏洞利用,對域賬號重置 ht…

《簡歷寶典》01 - 一文帶你學會如何寫一份糟糕透頂的簡歷

我們每個人幾乎都會面對找工作這件事,而找工作或者說求職首先就是要寫一份簡歷。今天狗哥將以一個不同的視角帶你寫一份無與倫比,糟糕透頂的求職簡歷,說實話,其實幾年前,我就是這么寫的。 目錄 1. 文件名 2. 基本信…

【項目管理】項目風險管理(Word原件)

風險和機會管理就是在一個項目開發過程中對風險進行識別、跟蹤、控制的手段。風險和機會管理提供了對可能出現的風險進行持續評估,確定重要的風險機會以及實施處理的策略的一種規范化的環境。包括識別、分析、制定處理和減緩行動、跟蹤 。合理的風險和機會管理應盡力…

白騎士的Python教學進階篇 2.4 高級數據結構

系列目錄 上一篇:白騎士的Python教學進階篇 2.3 文件操作??????? 在Python中,掌握高級數據結構可以顯著提升你的編程效率和代碼可讀性。高級數據結構包括列表推導式、生成器與迭代器以及裝飾器。本文將詳細介紹這些高級數據結構,幫助…

算法刷題1-10大排序算法匯總

十種常見排序算法可以分為兩大類: 比較類排序:通過比較來決定元素間的相對次序,由于其時間復雜度不能突破O(nlogn),因此也稱為非線性時間比較類排序。非比較類排序:不通過比較來決定元素間的相對次序,它可…

服務器安裝Nginx教程

1、安裝所需依賴 yum -y install gcc gcc-c make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel 2、創建nginx目錄并下載Nginx安裝包 //進入/usr/local cd /usr/local//創建nginx目錄 mkdir nginx//進入nginx目錄 cd nginx//下載nginx tar包 wget http://…

Lesson 47 A cup of coffee

Lesson 47 A cup of coffee 詞匯 like v. 喜歡,想要 用法:like 物品 / 人 喜歡……    like 動詞ing 喜歡做……(習慣性)    like to 動詞原形 喜歡做……(一次性) 例句:我喜歡小狗…

[leetcode hot 150]第五百三十題,二叉搜索樹的最小絕對差

題目: 給你一個二叉搜索樹的根節點 root ,返回 樹中任意兩不同節點值之間的最小差值 。 差值是一個正數,其數值等于兩值之差的絕對值。 解析: minDiffInBST 方法是主要方法。創建一個 ArrayList 來存儲樹的節點值。inorderTrave…

前端日常掃盲

一、js標簽語句 直接上代碼 for(let i 0; i < 10; i){console.log("頂層循環");for(let j 0; j < 10; j){console.log("內層循環",i,j);if(i * j > 30){console.log("退出頂層循環");break;}} }如上面的代碼&#xff0c;雙層循環&a…

opencv-yolo-tiny車輛檢測 ----20240705

opencv-yolo-tiny 實現車輛檢測 opencv.dnn模塊已經支持大部分格式的深度學習模型推理,該模塊可以直接加載tensorflow、darknet、pytorch等常見深度學習框架訓練出來的模型,并運行推理得到模型輸出結果。opecnv.dnn模塊已經作為一種模型部署方式,應用在工業落地實際場景中。…

持續交付:自動化測試與發布流程的變革

目錄 前言1. 持續交付的概念1.1 持續交付的定義1.2 持續交付的核心原則 2. 持續交付的優勢2.1 提高交付速度2.2 提高軟件質量2.3 降低發布風險2.4 提高團隊協作 3. 實施持續交付的步驟3.1 構建自動化測試體系3.1.1 單元測試3.1.2 集成測試3.1.3 功能測試3.1.4 性能測試 3.2 構建…

(一)進程與線程

一、進程和線程的概念 1.1 進程 程序由指令和數據組成&#xff0c;但這些指令要運行&#xff0c;數據要讀寫&#xff0c;就必須將指令加載至CPU&#xff0c;數據加載至內存。在指令運行過程中還需要用到磁盤、網絡等設備。進程就是用來加載指令、管理內存、管理 IO 的。當一個…

鴻蒙系統的開發與學習

1.開發工具的下載 DevEco Studio-HarmonyOS Next Beta版-華為開發者聯盟 安裝、環境配置時&#xff0c;建議 自定義目錄 注意&#xff1a;路徑中不要有 中文、特殊字符。 2.ArkTS基礎總結 1&#xff09;三種數據類型 ① string 字符串&#xff1a;描述信息 ② number 數…

銀聯快捷支付的優點!

快速支付&#xff0c;又稱電子支付或第三方支付&#xff0c;在行業中得到了廣泛的應用。用戶只需通過銀行完成交易。方便快捷是指銀行可以在任何條件下支持用戶之間的轉賬、支付等即時結算服務。快速支付是指用戶可以通過手機實現銀行卡等相關操作。然而&#xff0c;現在大多數…

Java后端每日面試題(day1)

目錄 JavaWeb三大組件依賴注入的方式Autowire和Resurce有什么區別&#xff1f;Spring Boot的優點Spring IoC是什么&#xff1f;說說Spring Aop的優點Component和Bean的區別自定義注解時使用的RetentionPolicy枚舉類有哪些值&#xff1f;如何理解Spring的SPI機制&#xff1f;Spr…

聽說現在AI產品經理薪資30k起步?0基礎可以轉行AI產品嗎?

2024年&#xff0c;還有什么新風口&#xff1f; AI、元宇宙、NFT… 很多人不知道&#xff0c;其實不管是元宇宙還是NFT&#xff0c;它們本質上就是人工智能領域。 AI自身應用領域非常廣泛&#xff0c;大批高薪崗位隨之涌了出來&#xff0c;包括AI產品經理。 AI產品經歷具體工…

CSS Float(浮動)

CSS Float(浮動) 概述 CSS Float(浮動)是一種布局技術,它允許開發人員將元素(如圖片或文本)沿著其容器的左側或右側放置,并且讓其他內容圍繞它流動。這種技術在過去被廣泛用于創建多欄布局,盡管現代CSS提供了更多高級的布局方法(如Flexbox和Grid),但理解浮動仍然…

【LeetCode:841. 鑰匙和房間 + DFS】

&#x1f680; 算法題 &#x1f680; &#x1f332; 算法刷題專欄 | 面試必備算法 | 面試高頻算法 &#x1f340; &#x1f332; 越難的東西,越要努力堅持&#xff0c;因為它具有很高的價值&#xff0c;算法就是這樣? &#x1f332; 作者簡介&#xff1a;碩風和煒&#xff0c;…