[redis進階一]redis的持久化(1)RDB篇章

目錄

一 認識持久化

(1)先看總結圖

(2)什么是持久化?

(3)redis是怎么進行持久化的呢

(4)簡單分析一下RDB持久化和AOF持久化的不同

二? RDB持久化

(1)RDB的觸發機制

(2)RDB的bgsave執行流程

(3)RDB文件的處理

(4)RDB的優缺點

(5)RDB效果演示板書

三? 溫習Linux文件系統


一 認識持久化

(1)先看總結圖

(2)什么是持久化?

持久化是指將數據保存在持久存儲介質(如硬盤、數據庫)中,以確保數據在系統重啟或關閉后仍然保持不變。持久化的概念通常應用在計算機領域,確保數據的長期存儲和可靠性。在軟件開發中,持久化可以是將數據寫入文件、數據庫或其他可靠的存儲介質,而不是僅存在于內存中,以保證數據的持久性和可恢復性。

?總結:我們都知道內存有個特性就是掉電易失,而我們的redis就是內存級數據庫,如果掉電狀態那redis在內存中的數據是不是就丟失了,所以我們要把redis中內存數據保存在硬盤上去形成持久化存儲,說大白話,就是數據保存在內存上不叫持久化,保存在硬盤上才叫持久化.

說到持久化就聯想到我們MySQL數據庫的事務中的四個特性了

  1. 原子性
  2. 一致性
  3. 持久性=>和持久化說的是一個意思
  4. 隔離性

(3)redis是怎么進行持久化的呢

redis為了保證速度快,數據肯定要在內存中,但是為了持久,數據還是要想辦法存儲在硬盤上~

所以redis決定在內存存數據,在硬盤上也存數據(這樣的兩份數據理論上來說是完全相同的,實際上存在小概率有差異,取決于咱們怎么實現持久化)

Redis ?持RDB和AOF兩種持久化機制,持久化功能有效地避免因進程退出造成數據丟失問題, 當下次重啟時利?之前持久化的?件即可實現數據恢復。

  1. 介紹RDB、AOF的配置和運?流程,以及控制持久化的命令,如bgsave和bgrewriteaof。
  2. 對常?持久化問題進?分析定位和優化

總結:

在讀取數據的時候直接從內存中讀取

在插入新數據或修改的時候,需要把數據同時寫到內存和硬盤(說是兩邊都寫,但是實際怎么寫硬盤還是有不同的策略可以保證整體的效率還是足夠高)

硬盤上的數據是在redis重啟的時候,用來恢復內存中的數據

(4)簡單分析一下RDB持久化和AOF持久化的不同

總結:

RDB:定期持久化,比如每個月把我電腦上的學習資料,整體進行備份到備份盤里(叫B)?,然后刪除舊備份(叫A),再把新備份名字改為舊備份的名字(A->B),這實際就是RDB過程中的一部分

AOF:實時持久化,只要我下載了一個新的學習資料,就立即把這個學習資料在備份盤里備份一份

二? RDB持久化

(1)RDB的觸發機制

理論:RDB持久化是把當前redis進程數據?成快照保存到硬盤的過程,觸發RDB持久化過程分為?動觸發和 ?動觸發。

?動觸發分別對應save和bgsave命令:

  1. save命令:阻塞當前Redis服務器,直到RDB過程完成為?,對于內存?較?的實例造成?時間 阻塞,基本不采?。
  2. bgsave命令:Redis進程執?fork操作創建?進程,RDB持久化過程由?進程負責,完成后?動 結束。阻塞只發?在fork階段,?般時間很短。
  3. Redis 內部的所有涉及RDB的操作都采?類似bgsave的?式。

除了?動觸發之外,Redis運??動觸發RDB持久化機制,這個觸發機制才是在實戰中有價值的。

  1. 使?save配置。如"save m n"表?m秒內數據集發?了n次修改,?動RDB持久化。
  2. 從節點進?全量復制操作時,主節點?動進?RDB持久化,隨后將RDB?件內容發送給從結點。
  3. 執?shutdown命令關閉Redis時,執?RDB持久化。

對于手動觸發和自動觸發的解讀:

(2)RDB的bgsave執行流程

流程說明:bgsave 是主流的RDB持久化?式,下?根據圖了解它的運作流程。

  1. 執?bgsave命令,Redis?進程判斷當前進是否存在其他正在執?的?進程,如RDB/AOF?進 程,如果存在bgsave命令直接返回。
  2. ?進程執?fork創建?進程,fork過程中?進程會阻塞,通過infostats命令查看 latest_fork_usec 選項,可以獲取最近?次fork操作的耗時,單位為微秒。
  3. ?進程fork完成后,bgsave命令返回"Backgroundsavingstarted"信息并不再阻塞?進程,可 以繼續響應其他命令。
  4. ?進程創建RDB?件,根據?進程內存?成臨時快照?件,完成后對原有?件進?原?替換。執?lastsave 命令可以獲取最后?次?成RDB的時間,對應info統計的rdb_last_save_time選 項。
  5. 進程發送信號給?進程表?完成,?進程更新統計信息。

ps:fork()是Linux提供的系統調用,通俗來講就是把父進程的PCB,地址空間,頁表,文件描述符等復制一份給子進程,這樣父進程中的內存數據子進程就得到了完全相同的一份,就可以進行持久化操作了

(3)RDB文件的處理

保存:RDB?件保存再dir配置指定的?錄(默認/var/lib/redis/)下,?件名通過dbfilename 配置(默認dump.rdb)指定。可以通過執?configsetdir{newDir}和configsetdbfilename {newFilename} 運?期間動態執?,當下次運?時RDB?件會保存到新?錄。

壓縮:Redis默認采?LZF算法對?成的RDB?件做壓縮處理,壓縮后的?件遠遠?于內存? ?,默認開啟,可以通過參數configsetrdbcompression{yes|no}動態修改。

校驗:如果Redis啟動時加載到損壞的RDB?件會拒絕啟動。這時可以使?Redis提供的redis check-dump?具檢測RDB?件并獲取對應的錯誤報告。

?板書:

(4)RDB的優缺點

  1. RDB是?個緊湊壓縮的?進制?件,代表Redis在某個時間點上的數據快照。?常適?于備份,全量復制等場景。?如每6?時執?bgsave備份,并把RDB?件復制到遠程機器或者?件系統中 (如hdfs)?于災備。
  2. Redis加載RDB恢復數據遠遠快于AOF的?式(RDB以二進制進行存儲,AOF以文本進行存儲)。
  3. RDB?式數據沒辦法做到實時持久化/秒級持久化。因為bgsave每次運?都要執?fork創建?進程,屬于重量級操作,頻繁執?成本過?。
  4. RDB?件使?特定?進制格式保存,Redis版本演進過程中有多個RDB版本,兼容性可能有? 險。

(5)RDB效果演示板書

三? 溫習Linux文件系統

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

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

相關文章

uniapp日常總結--uniapp頁面跳轉方式

uniapp日常總結--uniapp頁面跳轉方式_uniapp 跳轉-CSDN博客

《汽車電器與電子技術》實驗報告

SRS系統結構原理與故障檢測診斷 車輛上為什么要配安全氣囊?——解析汽車被動安全的關鍵防線 一、安全氣囊的核心作用:應對高速碰撞的“救命緩沖墊” 車輛在高速碰撞時(如正面碰撞、側面碰撞),人體會因慣性以極高速度…

ffmpeg編解碼器相關函數

文章目錄 🎯 你需要理解的核心結構體:📦 常用函數及使用順序(以解碼為例)1?? avcodec_find_decoder() / avcodec_find_encoder()2?? avcodec_alloc_context3()3?? avcodec_parameters_to_context()4?? avcodec…

尚硅谷2019版Java網絡編程筆記

第14章 網絡編程 網絡編程概述 什么是網絡編程? 網絡編程是通過網絡協議實現計算機之間的數據交換。Java提供了強大的網絡編程支持,隱藏了底層細節,開發者可以輕松實現網絡通信。 網絡編程的核心問題 如何定位網絡上的主機:通…

解決【遠程主機可能不符合 glibc 和 libstdc++ Vs code 服務器的先決條件】

可能是因為vscode不支持遠程操作系統的版本,要么升級操作系統要么回退vscode版本 vscode回退1.97版本下載地址: 1.97版本VSCODE

forms+windows添加激活水印

formswindows添加激活水印 多語言水印文本,根據系統語言自動切換。水印顯示在每個屏幕的右下角,位置動態調整。半透明灰色文字,微軟雅黑字體。窗口無邊框、置頂、透明背景,不干擾用戶操作。支持多顯示器。高DPI適配。 效果圖&am…

LeetCode --- 444 周賽

題目列表 3507. 移除最小數對使數組有序 I 3508. 設計路由器 3509. 最大化交錯和為 K 的子序列乘積 3510. 移除最小數對使數組有序 II 一、移除最小數對使數組有序 I & II 由于數組是給定的,所以本題的操作步驟是固定的,我們只要能快速模擬操作的過…

限流、降級、熔斷、隔離?

在微服務架構中,服務限流、降級、熔斷和隔離是保障系統高可用性的核心手段,但它們解決的問題和應用場景不同。以下是它們的區別、解決方案和實際案例的詳細說明: 一、服務限流(Rate Limiting) 定義:通過限…

Day22 -php開發01--留言板+知識點(超全局變量 文件包含 數據庫操作 第三方插件)

環境要求:php7.0.9 小皮 navicat phpstorm24.1 知識點:會寫(留言板 留言板后臺) 超全局變量 三方插件的使用 文件包含 1、開啟小皮并利用navicat新建一個數據庫 注意:本地的服務mysql關閉后 才可打開小皮。屬…

制造一只電子喵 (qwen2.5:0.5b 微調 LoRA 使用 llama-factory)

AI (神經網絡模型) 可以認為是計算機的一種新的 “編程” 方式. 為了充分利用計算機, 只學習傳統的編程 (編程語言/代碼) 是不夠的, 我們還要掌握 AI. 本文以 qwen2.5 和 llama-factory 舉栗, 介紹語言模型 (LLM) 的微調 (LoRA SFT). 為了方便上手, 此處選擇使用小模型 (qwen2…

LeetCode 解題思路 37(Hot 100)

解題思路: 初始化: 初始化最大舉行 max 和棧 stack。左右補零: 考慮柱子遞增的邊界情況, 初始化填充柱狀圖 newHeights。遍歷處理: 對于每一根遍歷到的柱子 newHeights[i],若柱子高度小于棧口索引&#xf…

HTML — 過渡與動畫

HTML過渡與動畫是提升網頁交互體驗的核心技術,主要通過CSS實現動態效果。 過渡 CSS過渡(Transition)介紹 適用于元素屬性變化時的平滑漸變效果,如懸停變色、尺寸調整。通過定義transition-property(過渡屬性&#xf…

跨站請求是什么?

介紹 跨站請求(Cross-Site Request)通常是指瀏覽器在訪問一個網站時,向另一個域名的網站發送請求的行為。這個概念在 Web 安全中非常重要,尤其是在涉及到“跨站請求偽造(CSRF)”和“跨域資源共享&#xff…

Web攻防—SSRF服務端請求偽造Gopher偽協議無回顯利用

前言 重學Top10的第二篇,希望各位大佬不要見笑。 SSRF原理 SSRF又叫服務端請求偽造,是一種由服務端發起的惡意請求,SSRF發生在應用程序允許攻擊者誘使服務器向任意域或資源發送未經授權的請求時。服務器充當代理,執行攻擊者構造…

Hibernate:讓對象與數據庫無縫對話的全自動ORM框架

一、為什么需要全自動ORM? 在手動編寫SQL的時代,開發者需要在Java代碼和數據庫表之間來回切換: // Java對象 public class User {private Long id;private String name;// getters and setters }// SQL語句 SELECT * FROM user WHERE id ?…

C語言超詳細指針知識(一)

通過前面一段時間C語言的學習,我們了解了數組,函數,操作符等的相關知識,今天我們將要開始進行指針的學習,這是C語言中較難掌握的一個部分,一定要認真學習!!! 1.內存與地址…

程序化廣告行業(70/89):ABTester系統助力落地頁優化實踐

程序化廣告行業(70/89):ABTester系統助力落地頁優化實踐 在程序化廣告領域摸爬滾打多年,深知持續學習和知識共享的重要性。寫這篇博客,就是希望能和大家一起深入探索程序化廣告行業,共同學習、共同進步。今…

項目管理(高軟56)

系列文章目錄 項目管理 文章目錄 系列文章目錄前言一、進度管理二、配置管理三、質量四、風險管理五、真題總結 前言 本節主要講項目管理知識,這些知識聽的有點意思啊。對于技術人想創業,單干的都很有必要聽聽。 一、進度管理 二、配置管理 三、質量 四…

常見的后綴名

.exe .exe(“executable”(可執行的))是 Windows 操作系統中最常見的可執行文件擴展名。此類文件包含了計算機能夠直接運行的機器碼指令。當用戶雙擊 .exe 文件時,操作系統會讀取其中的指令并執行相應的程序或任務。…

XILINX DDR3專題---(1)IP核時鐘框架介紹

1.什么是Reference Clock,這個時鐘一定是200MHz嗎? 2.為什么APP_DATA是128bit,怎么算出來的? 3.APP :MEM的比值一定是1:4嗎? 4.NO BUFFER是什么意思? 5.什么情況下Reference Clock的時鐘源可…