Redis 保證數據不丟失

Redis 保證數據不丟失(或最大限度減少丟失)的核心是通過 持久化機制 結合 合理的配置策略 實現的。具體方案如下:

一、核心:開啟 Redis 持久化(防止進程崩潰丟失數據)

Redis 提供兩種持久化方式,可單獨使用或結合使用,確保內存中的數據定期寫入磁盤。

1. RDB 持久化(快照方式)
  • 原理:在指定時間間隔內,將內存中的數據集 快照(Snapshot) 寫入磁盤(生成 .rdb 文件)。
  • 觸發方式
    • 自動觸發:通過 redis.conf 配置觸發條件(如 5 分鐘內有 10 次寫入):
save 300 10    # 300秒內有10次修改則觸發快照
save 60 10000  # 60秒內有10000次修改則觸發快照
    • 手動觸發:執行 save(阻塞主進程,不推薦)或 bgsave(后臺異步執行,推薦)命令。
  • 優點.rdb 文件是壓縮的二進制文件,恢復速度快,適合備份。
  • 缺點:可能丟失最后一次快照后的所有數據(如快照間隔內 Redis 崩潰)。

2. AOF 持久化(日志方式)
  • 原理:將每一條寫命令(如 sethset)追加到 .aof 日志文件中,Redis 重啟時通過重放日志恢復數據。
  • 配置方式:在 redis.conf 中開啟:
appendonly yes          # 開啟AOF
appendfilename "appendonly.aof"  # AOF文件名
  • 同步策略(控制命令寫入磁盤的頻率,平衡性能與安全性):
appendfsync always    # 每執行一條命令就同步到磁盤(最安全,性能最差)
appendfsync everysec  # 每秒同步一次(默認,推薦,最多丟失1秒數據)
appendfsync no        # 由操作系統決定何時同步(性能最好,安全性最差)
  • 優點:數據丟失風險低(默認最多丟失 1 秒數據),日志文件可讀性強。
  • 缺點.aof 文件體積較大,恢復速度比 RDB 慢。

3. 推薦組合:RDB + AOF
  • 原因:RDB 適合快速備份和恢復,AOF 確保數據丟失量最小。
  • Redis 4.0+ 支持混合持久化:AOF 重寫時會將 RDB 快照內容寫入 AOF 文件開頭,兼顧兩者優勢:
aof-use-rdb-preamble yes  # 開啟混合持久化(默認開啟)

二、進階:防止硬件/磁盤故障(高可用部署)

即使開啟持久化,若單機磁盤損壞,數據仍可能丟失。需通過 主從復制 + 哨兵/集群 實現高可用:

1. 主從復制(Master-Slave)
  • 原理:主節點(Master)處理寫請求,從節點(Slave)實時復制主節點的數據。
  • 作用:主節點故障時,從節點可作為備用數據來源,避免單點故障。
  • 配置:在從節點的 redis.conf 中指定主節點地址:
replicaof <master-ip> <master-port>  # Redis 5.0+ 用 replicaof,舊版本用 slaveof

2. 哨兵(Sentinel)
  • 作用:監控主從節點狀態,主節點故障時自動將從節點升級為主節點(自動故障轉移),確保服務持續可用。
  • 配置:通過 sentinel.conf 定義監控的主節點和故障轉移規則:
sentinel monitor mymaster <master-ip> <master-port> 2  # 監控名為mymaster的主節點,2個哨兵同意則判定故障
sentinel down-after-milliseconds mymaster 30000  # 30秒未響應則標記為主觀下線

3. Redis 集群(Cluster)
  • 適用場景:海量數據 + 高并發,將數據分片存儲在多個節點(至少 3 主 3 從)。
  • 數據安全:每個主節點有從節點備份,主節點故障后從節點自動切換,同時結合持久化確保分片數據不丟失。

三、其他關鍵配置(減少數據丟失風險)

  1. 禁用內存淘汰策略(謹慎)
    若 Redis 內存滿了,默認會淘汰舊數據(如 allkeys-lru),可通過配置禁止淘汰(僅在內存充足時使用):
maxmemory-policy noeviction  # 內存滿時拒絕寫請求,不淘汰數據
  1. 開啟 AOF 重寫自動觸發
    AOF 文件會越來越大,通過重寫壓縮(保留最終狀態的命令):
auto-aof-rewrite-percentage 100  # AOF文件比上次重寫后增長100%時觸發
auto-aof-rewrite-min-size 64mb   # AOF文件至少64MB才觸發重寫
  1. 避免誤操作
    • 禁用危險命令(如 flushallflushdb):
rename-command FLUSHALL ""
rename-command FLUSHDB ""
    • 開啟密碼認證:
requirepass your_strong_password

四、總結:數據不丟失的最佳實踐

  1. 基礎保障:開啟 AOF(appendfsync everysec)+ RDB 混合持久化,確保進程崩潰最多丟失 1 秒數據。
  2. 高可用保障:部署主從復制 + 哨兵(或集群),防止單點硬件故障導致數據丟失。
  3. 運維保障:定期備份 .rdb.aof 文件,測試數據恢復流程。

通過以上組合,可將 Redis 數據丟失風險降至最低,滿足絕大多數生產環境的可靠性要求。

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

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

相關文章

NUMA/SNC 4種組合下Stream+MLC性能對決:雙路服務器BIOS調優全攻略

關于調整 BIOS NUMA 與 SNC 選項的 Stream / MLC 性能測試總結一、測試背景與目的在現代多路 Intel Xeon 服務器上&#xff0c;NUMA&#xff08;Non-Uniform Memory Access&#xff09;與 SNC&#xff08;Sub-NUMA Clustering&#xff09;是兩項決定內存訪問延遲與帶寬的關鍵 B…

Java-113 深入淺出 MySQL 擴容全攻略:觸發條件、遷移方案與性能優化

點一下關注吧&#xff01;&#xff01;&#xff01;非常感謝&#xff01;&#xff01;持續更新&#xff01;&#xff01;&#xff01; &#x1f680; AI篇持續更新中&#xff01;&#xff08;長期更新&#xff09; AI煉丹日志-31- 千呼萬喚始出來 GPT-5 發布&#xff01;“快的…

Kafka Connect + Streams 用到極致從 CDC 到流處理的一套落地方案

關鍵目標&#xff1a; 零丟失&#xff1a;端到端 Exactly Once&#xff08;Source 端事務 Streams exactly_once_v2 Sink DLQ&#xff09;。低延遲&#xff1a;Producer 端批量壓縮 Streams 緩存 合理 poll/commit 間隔。可恢復&#xff1a;Connect/Streams 的 rebootstrap…

# `std::basic_istream`總結

std::basic_istream總結 文章目錄std::basic_istream總結概述常用類型定義全局對象核心成員函數1. 格式化輸入2. 非格式化輸入3. 流定位4. 其他功能繼承的功能來自 std::basic_ios狀態檢查狀態管理來自 std::ios_base格式化標志流打開模式特點說明例子std::basic_istream全面用…

人工智能——課程考核

課程考核包括平時測驗&#xff08;75%&#xff09;和討論&#xff08;25%&#xff09;兩個環節&#xff0c;測驗采用線上隨堂考試&#xff08;2-3次&#xff0c;具體會在本課堂發布&#xff09;重點考核&#xff1a;A*算法、極大極小過程&#xff08;α-β剪枝&#xff09;、不…

機器學習-時序預測1

最近面試過程中&#xff0c;Predict-then-Optimize是運籌優化算法工程師未來的發展方向。就像我之前寫過的運籌優化&#xff08;OR&#xff09;-在機器學習&#xff08;ML&#xff09;浪潮中何去何從&#xff1f;-CSDN博客&#xff0c;機器學習適合預測、運籌優化適合決策。我研…

vim-plugin AI插件

文章目錄一、vim 插件管理vim-plug二、如何使用和配置 vim-plug第 1 步&#xff1a;安裝 vim-plug第 2 步&#xff1a;配置你的 .vimrc / init.vim第 3 步&#xff1a;安裝插件常用 vim-plug 命令三、配置vim-aivim-aivim-deepseekvim升級四、配置 AI 插件GitHub Copilot第 1 步…

Adobe Photoshop 2025 最新下載安裝教程,附PS2025下載

點擊獲取&#xff1a;Adobe Photoshop 2025 安裝教程&#xff1a; 1、安裝包下載后&#xff0c;鼠標右鍵解壓安裝包 添加圖片注釋&#xff0c;不超過 140 字&#xff08;可選&#xff09; 2、雙擊打開解壓后的安裝包文件夾 3、打開setup文件夾 添加圖片注釋&#xff0c;不超過…

LeetCode算法日記 - Day 27: 計算右側小于當前元素的個數、翻轉對

目錄 1. 計算右側小于當前元素的個數 1.1 題目解析 1.2 解法 1.3 代碼實現 2. 翻轉對 2.1 題目解析 2.2 解法 2.3 代碼實現 1. 計算右側小于當前元素的個數 315. 計算右側小于當前元素的個數 - 力扣&#xff08;LeetCode&#xff09; 給你一個整數數組 nums &#xf…

基于SamOut的音頻Token序列生成模型訓練指南

通過PyTorch實現從音頻特征到語義Token的端到端序列生成&#xff0c;適用于語音合成、游戲音效生成等場景。&#x1f9e0; 模型架構與核心組件 model SamOut(voc_sizevoc_size, # 詞匯表大小&#xff08;4098目錄名特殊Token&#xff09;hidden_sizehidden_size, …

AWD攻防總結

基本防守策略 1、改用戶密碼和服務密碼 1&#xff09;改linux用戶密碼&#xff1a; #passwd 如果有權限就刪除用戶&#xff1a; #userdel -r [用戶名] 2&#xff09;改mysql密碼&#xff1a; #update mysql.user set passwordpassword(密碼) where userroot; 刪除匿名用戶&…

Android14 基于Configfs的USB動態配置init.usb.configfs.rc

1 Android14 USB子系統啟動以及動態切換的init.usb.rc 2 Android14 基于Configfs的USB動態配置init.usb.configfs.rc 3 Android14 高通平臺的USB子系統啟動和動態配置init.qcom.usb.rc 1. 什么是ConfigFS ConfigFS 是 Linux 內核提供的一種用戶空間可配置的偽文件系統在Linu…

2025年KBS SCI1區TOP,矩陣差分進化算法+移動網絡視覺覆蓋無人機軌跡優化,深度解析+性能實測

目錄1.摘要2.系統模型和問題表述3.矩陣差分進化算法4.結果展示5.參考文獻6.算法輔導應用定制讀者交流1.摘要 本文提出了一種面向無人機&#xff08;UAV&#xff09;新型軌跡優化方法&#xff0c;以實現對地面移動節點的高效視覺覆蓋。與傳統方法不同&#xff0c;該方法顯式考慮…

Python OpenCV圖像處理與深度學習:Python OpenCV圖像幾何變換入門

圖像變換&#xff1a;掌握OpenCV中的幾何變換 學習目標 通過本課程&#xff0c;學員們將能夠理解圖像的幾何變換原理&#xff0c;包括縮放、旋轉和平移&#xff0c;并能夠使用Python和OpenCV庫實現這些變換。本課程將通過理論講解與實踐操作相結合的方式&#xff0c;幫助學員們…

Redis Windows 7.0.5 安裝教程(附exe/msi下載+環境配置+命令測試)

?第一步&#xff1a;下安裝包? 打開瀏覽器&#xff08;比如 Edge 或 Chrome&#xff09;&#xff0c;復制這個鏈接到地址欄敲回車&#xff1a; https://pan.quark.cn/s/31912e0d0443 進去后往下翻&#xff0c;找名字帶 ?**redis-7.0.5? 的文件&#xff0c;?選那個 .exe 結…

數據結構(單鏈表)

目錄 1.鏈表的概念及結構 2.單鏈表的應用 2.1 打印鏈表 2.2申請新節點 2.3插入&#xff08;尾刪和頭刪&#xff09; 2.4刪除&#xff08;尾刪和頭刪&#xff09; 2.5查找 2.6任意位置插入 2.7刪除指定位置的元素 2.8 銷毀鏈表 3.總結 1.鏈表的概念及結構 &#xff…

電腦沒加域卻能獲取到IP地址

企業網絡管理的核心邏輯&#xff01;電腦沒加域卻能獲取到IP地址&#xff0c;這完全是一種刻意為之的安全設計&#xff0c;而不是網絡故障。 簡單來說就是&#xff1a;“給你IP&#xff0c;但不給你權限。” 這背后是一套完整的 網絡準入控制&#xff08;NAC&#xff09; 策略。…

Go語言入門學習筆記

&#x1f4da; 前言 歡迎學習Go語言&#xff01;這份教材假設您是編程零基礎&#xff0c;從最基本的概念開始講解。Go語言&#xff08;也稱為Golang&#xff09;由Google開發&#xff0c;簡單、高效、并發能力強&#xff0c;適合后端開發、系統編程和云計算。 學習建議&#xf…

gradle安裝、配置環境變量、配置阿里源及idea 中配置gradle

下載gradle https://services.gradle.org/distributions/ 配置系統環境變量 新增GRADLE_HOME D:\Information_Technology\App\gradle-8.14.3-bin\gradle-8.14.3 新增GRADLE_USER_HOME D:\Information_Technology\App\gradleHouse 設置 path&#xff0c;新增一行 %GRADLE_…

C# FlaUI win 自動化框架,介紹

一、簡潔介紹 FlaUI 是一套基于 .NET 的 Windows 桌面應用自動化測試庫&#xff0c;支持 Win32、WinForms、WPF、UWP 等多種類型的應用。它基于微軟原生 UI Automation 庫&#xff0c;提供了更現代、易用的 API&#xff0c;適合自動化測試工程師和開發者實現高效、可維護的 UI …