Redis(23) RDB和AOF有什么區別?

Redis 的 RDB(Redis Database)和 AOF(Append-Only File)是兩種主要的持久化機制。每種機制都有其獨特的工作方式、優缺點和適用場景。以下是兩者的詳細比較,并結合代碼示例進行解釋。

RDB(Redis Database)

工作原理

RDB 持久化通過將 Redis 內存中的數據在特定時間點(快照)保存到磁盤上的二進制文件中。默認情況下,Redis 會根據配置的時間間隔和數據變化量來自動觸發 RDB 快照。

優點
  1. 文件緊湊:RDB 文件是緊湊的二進制文件,適合用于備份和傳輸。
  2. 恢復速度快:由于 RDB 文件是二進制格式的快照,加載 RDB 文件恢復數據的速度較快。
  3. 對性能影響小:RDB 持久化通常在后臺異步進行,對 Redis 的性能影響較小。
缺點
  1. 數據丟失風險:在兩次 RDB 快照之間,如果 Redis 宕機,可能會丟失自上次快照以來的數據。
  2. 資源消耗大:RDB 快照需要 fork 子進程,可能會消耗較多的 CPU 和內存資源,特別是在內存數據量較大的情況下。
配置示例

redis.conf 配置文件中配置 RDB:

save 900 1  # 900秒內如果有1個key變化, 則進行快照
save 300 10 # 300秒內如果有10個key變化, 則進行快照
save 60 10000 # 60秒內如果有10000個key變化, 則進行快照
手動觸發 RDB 快照的代碼示例
import redis.clients.jedis.Jedis;public class RedisRDBExample {public static void main(String[] args) {try (Jedis jedis = new Jedis("localhost", 6379)) {// 手動觸發 RDB 快照String response = jedis.bgsave();System.out.println("RDB Snapshot response: " + response);}}
}

AOF(Append-Only File)

工作原理

AOF 持久化通過將每個寫命令以日志的形式追加到文件中。當 Redis 重啟時,會通過重放這些寫命令來恢復數據。

優點
  1. 數據安全性高:AOF 可以提供更高的數據持久化保障,尤其是在設置了較短的同步間隔時。
  2. 可讀性好:AOF 文件是可讀的文本文件,可以通過它了解 Redis 執行的寫命令。
  3. 可修復性強:如果 AOF 文件損壞,可以通過修剪或編輯文件修復問題。
缺點
  1. 文件較大:AOF 文件通常比 RDB 文件大,存儲開銷較高。
  2. 恢復速度慢:因為需要重放所有寫命令,加載 AOF 文件恢復數據的速度較慢。
  3. 對性能影響大:頻繁的磁盤寫入操作可能會對 Redis 性能產生一定影響,尤其是在高寫入負載的情況下。
配置示例

redis.conf 配置文件中配置 AOF:

appendonly yes # 啟用AOF持久化
appendfilename "appendonly.aof" # AOF文件名
appendfsync everysec # 每秒同步寫入磁盤
手動觸發 AOF 重寫的代碼示例
import redis.clients.jedis.Jedis;public class RedisAOFExample {public static void main(String[] args) {try (Jedis jedis = new Jedis("localhost", 6379)) {// 手動觸發 AOF 重寫String response = jedis.bgrewriteaof();System.out.println("AOF Rewrite response: " + response);}}
}

對比總結

特性RDBAOF
數據持久化頻率定期快照每個寫命令
文件格式緊湊的二進制文件可讀的文本日志文件
恢復速度
數據丟失風險較高(取決于快照頻率)較低(取決于同步策略)
性能影響較小(異步操作)較大(頻繁磁盤寫操作)
文件大小較小較大
使用場景適合定期備份和快速恢復適合數據安全性要求高的場景

混合持久化

Redis 4.0 引入了混合持久化,將 RDB 快照和 AOF 日志結合起來使用。在 Redis 4.0 及以上版本中,可以啟用混合持久化:

aof-use-rdb-preamble yes # 啟用混合持久化

混合持久化會將最近的 RDB 快照和之后的 AOF 日志結合起來,這樣可以在兼顧恢復速度和持久化保障的情況下,提供更好的性能。

總結

Redis 的 RDB 和 AOF 持久化機制各有優缺點,可以根據具體需求選擇合適的持久化策略。RDB 適合定期備份和快速恢復,而 AOF 提供了更高的數據持久化保障。通過合理配置,可以在性能和數據安全性之間找到平衡。此外,混合持久化機制結合了 RDB 和 AOF 的優點,提供了更好的性能和數據安全性保障。通過上述代碼示例,可以輕松地在 Java 應用中使用 Jedis 客戶端操作 Redis 的持久化機制。

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

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

相關文章

在WSL2 Ubuntu中部署FastDFS服務的完整指南

在WSL2 Ubuntu中部署FastDFS服務的完整指南📖 前言🛠? 環境準備1. 系統要求2. Ubuntu應用🚀 安裝服務1. 更新系統2. 安裝編譯依賴3. 下載源碼4. 編譯安裝🔧 配置服務1. 設置配置文件2. 創建數據目錄3. 配置Tracker服務4. 配置Sto…

新手向:網絡編程完全指南

1. 引言:什么是網絡編程?網絡編程(Network Programming)是指利用計算機網絡實現程序間通信的技術。它構建在計算機網絡協議基礎上,通過編程實現不同設備間的數據交換與資源共享。從底層協議實現到高層應用開發&#xf…

阿里云——云存儲與數據庫服務

云存儲與數據庫服務 數據是數字時代的新石油,而存儲與數據庫服務就是保存和提煉這些石油的“油庫與煉油廠”。阿里云提供了從對象、塊、文件存儲到關系型、NoSQL、數據倉庫的全方位數據服務。本章將幫你構建一套清晰的數據存儲選型框架,并掌握核心服務的…

瀏覽器網頁路徑掃描器(腳本)

使用網頁路徑掃描器可以掃描網頁的路徑,一些工具如ffuf為在命令行上操作,比較不便,而其他資源不好找到 Website path scanner(Script-tampermonkey) 腳本發布在GitHub,本文章也關聯文件資源 GitHub:Website path scanner(Script-…

實戰原型模式案例

作者:小凱 分享、讓自己和他人都能有所收獲!😄 一、前言 老板你加錢我的代碼能飛 程序員這份工作里有兩種人;一類是熱愛喜歡的、一類是僅當成工作的。而喜歡代碼編程的這部分人會極其主動學習去豐富自己的羽翼,也非常喜…

微信小程序餐飲掃碼點餐小程序堂食外賣桌臺自助下單源碼

功能說明:商家助手APP、接單更方便前端頁面模版隨意挑選,可diy精裝設計線下買單餐桌點餐快速下單會員管理訂單管理優惠券核銷叫號取餐排隊叫號商品管理桌位管理數據統計售后訂單配送設置推廣碼硬件設備一、技術架構:PHPUniApp構建高性價比系統…

Linux應用軟件編程---網絡編程(TCP并發服務器構建:[ 多進程、多線程、select ])

TCP并發服務器構建一、服務器單循環服務器:服務端同一時刻只能處理一個客戶端的任務(TCP)并發服務器:服務端同一時刻可以處理多個客戶端的任務(UDP)二、TCP服務端并發模型1、多進程進程資源開銷大&#xff…

重構審計體驗!批量生成報表項目底稿的憑證檢查表

在審計工作中,我們通過序時賬或其他審計軟件篩選導出的憑證列表,要如何快速分發給各個報表項目底稿的憑證檢查表呢? “TB工具箱2025”正式上線“批量生成憑證表”的功能,通過一些巧妙的設計,使其具備高度的通用性&…

【c++進階系列】:萬字詳解二叉搜索樹(附源碼實現)

🔥 本文專欄:c 🌸作者主頁:努力努力再努力wz 💪 今日博客勵志語錄: 你可以走得慢,但別回頭 1.概念 二叉搜索樹,從其名字我們就能知道該數據結構是一個特殊的二叉樹,而二…

通過web服務做橫向移動

環境配置邊緣主機(win10):192.168.237.140 10.10.90.128內網主機(win7):10.10.90.129 web服務 -- upload-labs攻擊機:vps(120.26.114.196)windows10windows7假設已經拿下邊緣主機win10,vshell上線ipconfig查…

把CentOS 7默認yum源改成騰訊云鏡像

步驟計劃: 備份原有CentOS-Base.repo文件,防止配置出錯可恢復 下載騰訊云提供的CentOS 7鏡像源配置文件(對應CentOS-Base.repo) 清理并生成yum緩存,使新源生效 具體命令 # 備份原有源 sudo mv /etc/yum.repos.d/C…

歐盟《人工智能法案》生效一年主要實施進展概覽(二)

文章目錄前言三、《關于禁止的人工智能實踐指南》1. 整體適用2. 禁止的人工智能系統具體介紹(1)有害操縱和欺騙類及對脆弱性的有害利用類(2)社會評分類(3)個人刑事犯罪風險評估和預測類(4&#…

私域電商新范式:開源AI智能名片鏈動2+1模式S2B2C商城小程序賦能傳統行業流量轉化

摘要:本文聚焦私域電商領域,指出其并非僅局限于快消品等傳統電商行業,多數傳統行業同樣面臨私域流量利用難題。傳統行業手握私域流量或優質流量入口,卻不知如何有效轉化,陷入流量焦慮。在此背景下,開源AI智…

Axios 整理常用形式及涉及的參數

一、axios get請求 //形如 axios.get(url[, config]).then(response > {// 處理響應}).catch(error > {// 處理錯誤}); //無 config 的情況下, axios.get(https://api.example.com/data).then(response > {// 處理響應}) .catch(error > {// 處理錯誤})…

深度學習---卷積神經網絡CNN

卷積神經網絡CNN(Convolutional Neural Networks)一、圖像原理圖像在計算機中是一堆按順序排列的數字,數值為0到255。0表示最暗,255表示最亮。上圖是只有黑白顏色的灰度圖,而更普遍的圖片表達方式是RGB顏色模型&#x…

日志輸出觸發的死鎖問題排查記錄

現象描述 錯誤日志: Found one Java-level deadlock:"http-nio-8083-exec-106":waiting for ownable synchronizer 0x00000005cbfa6b90, (a java.util.concurrent.locks.ReentrantLock$NonfairSync),which is held by "http-nio-8083-exec-10" …

UNIX網絡編程筆記:高級套接字編程20-25

廣播通信:局域網內的高效信息傳播 在局域網通信場景中,廣播是一種高效的一對多信息傳播方式 。它無需為每個接收者單獨建立連接,能一次性將消息送達網段內所有目標,廣泛應用于服務發現、網絡通知等場景。以下從基礎原理到實踐應用…

React Native核心技術深度解析_Trip Footprints

React Native 框架詳細技術解析 作為前端開發者,理解React Native需要從Web開發的角度出發,了解其獨特之處和技術實現。 🎯 React Native 核心概念 什么是React Native? React Native是Facebook開發的跨平臺移動應用開發框架&…

預算管理的“數字圍欄“:如何用實時預警終結行政費用超支

作為公司行政主管,每年最讓我忐忑的時刻不是年終總結,而是季度財務分析會。當CFO皺著眉頭指出行政費用又超支時,那種如坐針氈的感覺至今難忘。行政預算就像一匹難以馴服的野馬,明明已經嚴加管控,卻總在年底給我們"…

NTLM哈希深度解析:從原理到安全實踐

NTLM哈希深度解析:從原理到安全實踐作為一名白帽子黑客,深入理解NTLM哈希機制對保障企業網絡安全至關重要。1. NTLM哈希概述 NTLM(New Technology LAN Manager)是微軟推出的一套身份驗證協議套件,用于在Windows網絡中驗…