Redis 高可用之"持久化"

来源:https://www.cnblogs.com/leizzige/archive/2020/01/05/12153951.html
-Advertisement-
Play Games

Redis高可用概述 在Redis中,實現高可用的技術主要包括:持久化、複製(讀寫分離)、哨兵、集群。 持久化: 持久化是最簡單的高可用方法(有時甚至不被歸為高可用手段),主要作用是數據備份,即將數據存儲在硬碟,保證數據不會因進程退出而丟失。 複製: 複製是高可用Redis的基礎,哨兵和集群都是在復 ...


Redis高可用概述

在Redis中,實現高可用的技術主要包括:持久化、複製(讀寫分離)、哨兵、集群。

  • 持久化:

    持久化是最簡單的高可用方法(有時甚至不被歸為高可用手段),主要作用是數據備份,即將數據存儲在硬碟,保證數據不會因進程退出而丟失。

  • 複製:

    複製是高可用Redis的基礎,哨兵和集群都是在複製的基礎上實現高可用的。複製主要實現了數據的多機備份,以及對於讀操作的負載均衡和簡單的故障恢復。

    缺陷:故障恢復無法自動化,寫操作無法負載均衡,存儲能力受到單機的限制。

  • 哨兵:

    在複製的基礎上,哨兵實現了自動化的故障恢復。

    缺陷:寫操作無法負載均衡;存儲能力收到單機限制。

  • 集群:

    通過集群,Redis解決了操作無法負載均衡,以及存儲能力收到單機限制的問題,實現了較為完善的高可用解決方案。

Redis持久化概述

持久化的功能:Redis 是記憶體資料庫,數據都是存儲在記憶體中。

Redis 的持久化分為 RDB 和 AOF 持久化:

  • 前者是將數據保存到硬碟。
  • 後者是將每次執行的寫命令保存到硬碟。
RDB 持久化

​ RDB持久化是將當前進程中的數據生成快照保存到硬碟中(因此也叫做快照持久化),保存的文件尾碼是RDB;

​ 當Redis重新啟動時,可以讀取快照文件恢複數據。

觸發條件

  • 手動觸發
  • 自動觸發

手動觸發:save命令和bgsave命令都可以生成 RDB 文件。

​ save命令會阻塞 Redis 服務進程,直到 RDB 文件創建完畢為止,在 Redis 伺服器 阻塞期間,伺服器不能執行任 何命令請求。

​ bgsave命令會創建一個子進程,由子進程來創建 RDB 文件,父進程(即 Redis 主進程) 繼續處理請求。bgsave 命令執行過程中,只有fork(ork了進程,子進程中的redis連接沒法用了,要重連) 子進程會阻塞伺服器,而對於 save 命令,整個過程都會阻塞伺服器。

在自動觸發 RDB 持久化時,Redis 也會使用 bgsave 而不是 save 來進行持久化;下麵介紹自動觸發 RDB 持久化條件。

自動觸發:最常見的情況是在配置文件中通過 save m n ,指定 m 秒內發生了 n 次變化時,會觸發 bgsave。

​ 在Redis 配置文件Redis.conf中,可以看到如下配置信息:

save 900 1  #當時間到 900 秒時,如果 Redis 數據發生了至少 1 次變化,則執行 bgsave。
save 300 10 
save 60 10000 

除了 save m n 以外,還有一些其他情況會觸發 bgsave:

  • 在主從複製場景下,如果從節點執行全量複製操作,則主節點會執行 bgsave 命令,並將 RDB 文件發送給從節點。
  • 執行 shutdown 命令時,也會自動執行 RDB 持久化。

啟動時載入

​ RDB 的載入工作實在伺服器啟動時自動執行的,並沒有專門的命令。但是由於 AOF 的優先順序更高,因此當 AOF 開啟時,會優先載入 AOF 文件來恢複數據。

文件校驗

​ Redis 載入 RDB 文件時,會對 RDB 文件進行校驗,如果文件損壞,則日誌中會列印錯誤,Redis 啟動失敗。

AOF 持久化

​ RDB 持久化是將進程數據寫入硬碟,而 AOF 持久化(即 Append Only File 持久化),則是將 Redis 執行的每次寫 命令記錄到單獨的日誌文件中,當 Redis 重啟的時候再次執行 AOF 來恢複數據。

與 RDB 相比 ,AOF 實時性更好,因此已成為當前主流的持久化方案。

開啟 AOF:Redis 伺服器預設開啟 RDB,關閉 AOF;要開啟 AOF,需要在配置文件中配置:appendonly yes。

文件校驗

​ 與載入 RDB 文件類似,Redis 載入 AOF 文件時,會對 AOF 文件進行校驗,如果文件損壞,則日誌中會列印錯 誤,Redis 啟動失敗。

RDB與AOF的優缺點

RDB 持久化:

  • 優點:RDB 文件緊湊,體積小,網路傳輸快,適合全量複製;恢復速度比 AOF 快很多。當然,與 AOF 相比,RDB 最重要的優點之一是對性能的影響相對較小。

  • 缺點:RDB 文件的致命缺點在於其數據快照的持久化方式決定了必然做不到實時持久化,而在數據越來越重要的今天,數據的大量丟失很多時候是無法接受的,因此 AOF 持久化成為主流。

    此外,RDB 需要滿足特定的格式,相容性差/

AOF 持久化:

  • 與 RDB 持久化相對應,AOF 的優點在於支持秒級持久化、相容性好,缺點是文件大、恢復速度慢、對性能影響大。

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如下C#實現對文件的重命名的方法需要傳入三個string類型的參數,分別是源文件的文件目錄、目的文件目錄和重命名的文件名稱,實現代碼如下: public ExecutionResult FileRename(string sourceFile, string destinationPath, str ...
  • 1.關於7z 首先在這裡先介紹一下7z壓縮軟體,7z是一種主流的 壓縮格式,它擁有極高的壓縮比。在電腦科學中,7z是一種可以使用多種壓縮演算法進行數據壓縮的檔案格式。主要有以下特點: 來源且模塊化的組件結構 最高的壓縮比 強大的AES-256加密 可更改配置的壓縮演算法 支持操大文件 支持多線程壓縮 ...
  • WeihanLi.Npoi 1.7.0 版本,增加了 `ColumnInputFormatter`/`ColumnOutputFormatter`,又進一步增強了導入導出的靈活性 ...
  • 文件移動(Move)操作和文件的複製(Copy)是C#程式開發經常遇到的方法,根據傳入的源文件地址和目標文件地址參數,實現對文件的操作。實現代碼如下: Move操作代碼: public static void MoveFolder(string sourcePath, string destPath ...
  • 使用brew install [軟體包]安裝軟體包時,卡在Updating Homebrew... 或輸入`brew update`更新brew,半天沒反應.產生原因一般是在國內訪問官方 更新源獲取資源太慢,解決方案可以採用更換國內鏡像更新源. ...
  • 前置說明:博主小白,第一次安裝ubuntu,參考了網上很多人的教程,發博記錄一下自己的安裝過程。由於有些地方博主理解較淺或者因為機器硬體等各方面原因,本教程適用有限,僅供參考。 1、準備工作 win系統的筆記本 移動硬碟 U盤 ubuntu鏡像文件:ubuntu系統文件(官網下載:https://u ...
  • VMware與Centos系統安裝之重置root密碼 今日任務 1.Linux發行版的選擇 2.vmware創建一個虛擬機(centos) 3.安裝配置centos7 4.xshell配置連接虛擬機(centos) 選擇性 pc可以選擇 -純系統 Linux/windows -雙系統 Windows ...
  • 一、下載與安裝 Oracle官網下載:https://www.oracle.com/technetwork/java/javase/downloads/index.html,點擊右側下載 接受並下載對應平臺文件(Win10為例) 打開安裝包,一路安裝,記住安裝目錄即可(安裝路徑無中文) 我的路徑:F ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...