2、Redis持久化詳解

Redis持久化詳解

文章目錄

  • Redis持久化詳解
    • 前言
    • RDB和AOF的區別
    • RDB和AOF的優缺點
    • Redis 持久化配置
    • 1、RDB持久化配置
    • 2、AOF持久化配置(嘗試修復會刪除aof文件內容)
    • 3、AOF 重寫功能
        • 新增知識點:
        • 新增知識點:

前言

Redis是一種高級 key-value 型的NoSQL數據庫。它跟memcached類似是內存型數據庫,不過Redis數據可以做持久化,即內存中的數據可以同步到磁盤進行存儲。而且Redis所支持的數據類型很豐富。有字符串,鏈表,集合和有序集合等。Redis支持在服務器端計算集合的并交和補集(difference)等,還支持多種排序功能。所以Redis也可以被看成是一個數據結構型服務器。

Redis的所有數據都是保存在內存中,然后不定期的通過異步方式保存到磁盤上(這稱為"半持久化模式"RDB);也可以把每一次數據變化都寫入到一個 append only file(AOF)里面(這稱為"全持久化模式")。

Redis的數據都存放在內存中,如果沒有配置持久化功能,Redis重啟后數據就全丟失了,于是需要開啟Redis的持久化功能,將數據保存到磁盤上,當Redis重啟后,可以從磁盤中恢復數據。Redis提供兩種方式進行持久化,一種是RDB 持久化(原理是將 Redis在內存中的數據庫記錄定時 dump 到磁盤上的 RDB持久化),另外一種是 AOF(append only file)持久化(原理是將Redis的操作日志以追加的方式寫入文件)。那么這兩種持久化方式有什么區別呢,改如何選擇呢?

RDB和AOF的區別

RDB持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤,實際操作過程是fork
一個子進程,先將數據集寫入臨時文件,寫入成功后,再替換之前的文件,用二進制壓縮存儲。
在這里插入圖片描述

AOF持久化以日志的形式記錄服務器所處理的每一個寫、刪除操作。查詢操作不會記錄(類似于MySQL數據庫的Binlog),以文本的方式記錄,可以打開文件看到詳細的操作記錄。
在這里插入圖片描述

RDB和AOF的優缺點

RDB存在哪些優勢呢?

  1. 一旦采用該方式,那么你的整個Redis數據庫將只包含一個文件,這對于文件備份而言是非常完美的。比如,你可能打算每個小時歸檔一次最近24小時的數據,同時還要每天歸檔一次最近30天的數據。通過這樣的備份策略,一旦系統出現災難性故障,我們可以非常容易的進行恢復。

  2. 對于災難恢復而言,RDB是非常不錯的選擇。因為我們可以非常輕松的將一個單獨的文件壓縮后再轉移到其它存儲介質上。

  3. 性能最大化。對于Redis的服務進程而言,在開始持久化時,它唯一需要做的只是fork出子進程,之后再由子進程完成這些持久化的工作,這樣就可以極大的避免服務進程執行IO 操作了。

  4. 相比于AOF機制,如果數據集很大,RDB的啟動效率會更高。

RDB又存在哪些劣勢呢?

  1. 如果想保證數據的高可用性,即最大限度的避免數據丟失,那么RDB將不是一個很好的選擇。因為系統一旦在定時持久化之前出現宕機現象,此前沒有來得及寫入磁盤的數據都將丟失。

  2. 由于RDB是通過fork子進程來協助完成數據持久化工作的,因此,如果當數據集較大時,可能會導致整個服務器停止服務幾百毫秒,甚至是1秒鐘。

AOF 的優勢有哪些呢?

  1. 該機制可以帶來更高的數據安全性,即數據持久性。Redis中提供了3種同步策略,即每秒同步、每修改同步和不同步。事實上,每秒同步也是異步完成的,其效率也是非常高的,所差的是一旦系統出現宕機現象,那么這一秒鐘之內修改的數據將會丟失。而每修改同步,我們可以將其視為同步持久化,即每次發生的數據變化都會被立即記錄到磁盤中。可以預見,這種方式在效率上是最低的。

  2. 由于該機制對日志文件的寫入操作采用的是 append(追加)模式,因此在寫入過程中即使出現宕機現象,也不會破壞日志文件中已經存在的內容。然而如果我們本次操作只是寫入了一半數據就出現了系統崩潰問題,不用擔心,在Redis下一次啟動之前,我們可以通過redis-check-aof工具來幫助我們解決數據一致性的問題。

  3. 如果日志過大,Redis可以自動啟用rewrite機制。即Redis以append模式不斷的將修改數據寫入到老的磁盤文件中,同時Redis還會創建一個新的文件用于記錄此期間有哪些修改命令被執行。因此在進行rewrite 切換時可以更好的保證數據安全性。

  4. AOF包含一個格式清晰、易于理解的日志文件用于記錄所有的修改操作。事實上,我們也可以通過該文件完成數據的重建。

AOF 的劣勢有哪些呢?

  1. 對于相同數量的數據集而言,AOF文件通常要大于RDB文件。RDB在恢復大數據集時的速度比AOF的恢復速度要快。

  2. 根據同步策略的不同,AOF在運行效率上往往會慢于RDB。總之,每秒同步策略的效率是比較高的,同步禁用策略的效率和RDB一樣高效。

二者選擇的標準,就是看系統是愿意犧牲一些性能,換取更高的緩存一致性(aof),還是愿意寫操作頻繁的時候,不啟用備份來換取更高的性能,待手動運行save的時候,再做備份(rdb)。

Redis 持久化配置

1、RDB持久化配置

Redis會將數據集的快照dump到dump.rdb文件中。此外,我們也可以通過配置文件來修改Redis服務器dump快照的頻率,在打開
6379.conf文件之后,我們搜索save可以看到下面的配置信息:

  • save 900 1 #在900秒(15
    分鐘)之后,如果至少有1個key發生變化,則dump內存快照。

  • save 300 10 #在300秒(5
    分鐘)之后,如果至少有10個key發生變化,則dump內存快照。

  • save 60 10000 #在60秒(1
    分鐘)之后,如果至少有10000個key發生變化,則dump內存快照。

注意:RDB正常退出會保存,非法退出不保存(比如直接killall) 也可用save命令手動保存

關掉主從復制

[root@redis ~<

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

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

相關文章

curl 命令詳解

curl 命令的 -d/–data 和 --data-urlencode 的區別 curl 命令的 -d/–data 和 --data-urlencode 都用于發送 HTTP POST 請求的數據&#xff0c;但關鍵區別在于 是否自動對數據進行 URL 編碼。以下是詳細對比&#xff1a; curl 命令的 -d/--data 和 --data-urlencode 都用于發送…

ubuntu下好用的錄屏工具

以下是 vokoscreen 的安裝教程&#xff0c;適用于 Linux 系統。vokoscreen 是一款簡單易用的屏幕錄制工具&#xff0c;支持錄制屏幕、攝像頭和音頻。 安裝 vokoscreen vokoscreen 提供了多種安裝方式&#xff0c;包括通過包管理器、Deb 包或 AppImage 文件。 方法 1&#xf…

筆試大題20分值(用兩個棧實現隊列)

目錄前言一、原題二、解題思路三、代碼實現&#xff08;c/c&#xff09;C語言代碼C代碼實現結語前言 目前博主在處于秋招求職的關鍵時期&#xff0c;在暑假這段時間會頻繁更新博客&#xff0c;想在暑假期間把一些常考的面試和筆試題過一下&#xff0c;利用這兩個月沉淀一下技術…

【知識掃盲】tokenizer.json中的vocab和merges是什么?

在自然語言處理里&#xff0c;tokenizer.json 文件一般是由 Hugging Face 的 Tokenizers 庫生成的&#xff0c;它是分詞器配置的核心文件。這里面的 vocab 和 merges 是子詞分詞算法&#xff08;像 BPE 這種&#xff09;的重要構成要素。下面為你詳細解釋它們的作用和工作原理&…

【安卓筆記】RxJava的Hook機制,整體攔截器

0. 環境&#xff1a; 電腦&#xff1a;Windows10 Android Studio: 2024.3.2 編程語言: Java Gradle version&#xff1a;8.11.1 Compile Sdk Version&#xff1a;35 Java 版本&#xff1a;Java11 1. 使用場景 整個項目都是用了RxJava&#xff0c;需要對 整個/部分 項目…

NX二次開發常用函數——從一個坐標系到另一個坐標系的轉換(UF_MTX4_csys_to_csys )相同體坐標轉化

再做項目時相信大家都會用到坐標轉化,例如,我之前寫的案例分享中的博客都用到過,之前總是找借口進行if else判斷,雖然可以實現,但是比起坐標變換無論代碼復雜程度還是運行速度都比較差,之前參加過曹大師的教學訓練營,但是明顯感覺到大佬寫代碼的邏輯性以及模塊化能力都比…

數據庫防止數組字符串序列化

請求接到數組["aa","bb"]后,后端需要轉換成字符串Java 8 使用 String.join()String[] arr {"aa", "bb"}; String str String.join(",", arr); // "aa,bb"如果采用其他轉換,在字段存入數據庫后會["\"a…

若依框架文件上傳返回路徑端口錯誤 - Nginx代理環境下serverConfig.getUrl()獲取端口異常

目錄一 、問題描述二、問題現象三、問題根本原因3.1 代碼分析3.2 問題核心四、解決方案五、總結一 、問題描述 在使用若依框架進行項目開發時&#xff0c;遇到了一個令人困擾的問題&#xff1a;文件上傳功能在本地開發環境運行正常&#xff0c;但部署到服務器后&#xff0c;上…

使用PyInstaller打包 Python 工程

引言:大模型是個好工具,盡管好多內容都是拼湊的,但是整理學到的就是自己的。因工作需要隱藏python源代碼,方法有PyInstaller 、Cpython等多種方法,PyInstaller更為常用,PyInstaller打包 Python 工程步驟整理如下: 一、確保系統環境準備就緒 安裝 Python 和 pip 確認版本…

Python 程序設計講義(1):PyCharm 安裝教程

Python 程序設計講義&#xff08;1&#xff09;&#xff1a;PyCharm 安裝教程 一、安裝 Python 解釋器 1、下載 Python 安裝文件 點擊如下鏈接進入 Python 官網&#xff1a; https://www.python.org/ 在彈出的頁面中單擊【Downloads】&#xff0c;然后單擊下面的【Download Pyt…

uniapp云打包安卓

1、基礎云打包 2、修改logo3、怎么實現下拉菜單4、修改啟動頁啟動頁默認這樣 5、URL Scheme頁面跳轉

Python----NLP自然語言處理(英文分詞器--NLTK)

一、NLTK_介紹NLTK&#xff08;Natural Language Toolkit&#xff0c;自然語言處理工具包&#xff09;&#xff0c;一個主要用于清洗和處理英文文本的Python工具包。它有很多的功能&#xff0c;我們主要使用的是它的分詞功能&#xff0c;之前講過中文分詞是比較復雜的&#xff…

傳統瀏覽器過時了?Dia如何用AI重新定義上網體驗

歡迎來到我的博客&#xff0c;代碼的世界里&#xff0c;每一行都是一個故事&#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交給時間 &#x1f3e0; &#xff1a;小破站 傳統瀏覽器過時了&#xff1f;Dia如何用AI重新定義上網體驗它是什么核心功能搜索編程左右互動感謝…

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現

基于DTLC-AEC與DTLN的輕量級實時語音增強系統設計與實現 前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到網站。 1. 引言 在當今的互聯網通信時代,實時語音通信已成為人們日常生活中不可或缺的一部分。然而,語音通信質量常…

Attu-Milvus向量數據庫可視化工具

本文介紹了如何安裝可視化工具Attu&#xff0c;包括使用Docker鏡像啟動并訪問Attu服務。 目錄 前言 一、Attu安裝 1. Docker容器安裝 2. 桌面程序安裝 二、使用 Milvus Web U 前言 Attu是一款專為Milvus向量數據庫打造的開源數據庫管理工具&#xff0c;提供了便捷的圖形化…

高效檢測數據突變的MDAM算法詳解

在數據分析領域&#xff0c;我們經常需要檢測數據序列中的異常變化。今天給大家介紹一種簡單但非常有效的算法——MDAM (Mean Drift Accumulation Monitor)&#xff0c;它能幫你輕松發現數據中的均值突變現象&#xff01;1. &#x1f50d; 算法原理累計數均值突變檢測算法(MDAM…

記錄一道sql面試題3

題目&#xff1a;有一張表a,和一張表ba:id age name1 18 kethy2 32 kavin3 22 tonyb:id dept description2 sale today2 dev sunday提問&#xff1a;將a和b兩張表左連接查詢&#xff0c;條件是a.id b.id會得到什么結果。查詢的字段為a.*,b.* 。說明&#xff1a;左表 a 中 id1 …

linux系統------LVS+KeepAlived+Nginx高可用方案

目錄 一、環境搭建 1.環境準備 2.安裝ipvsadm 和 安裝 keepalived&#xff08;Lvs服務器&#xff09; 3.為兩臺RS配置虛擬ip&#xff08;nginx服務器&#xff09; 1.配置虛擬網絡子接口&#xff08;回環接口&#xff09; 2.修改內容如下: 3.配置ARP 二、KeepalivedLvsN…

【MySQL】性能優化實戰指南:釋放數據庫潛能的藝術

文章目錄MySQL性能優化實戰指南&#xff1a;釋放數據庫潛能的藝術&#x1f680; 引言為什么需要MySQL性能優化&#xff1f;&#x1f4cb; 性能優化基礎知識MySQL性能瓶頸分析1. 硬件資源瓶頸2. MySQL內部瓶頸&#x1f3c6; 優化配置策略大全&#x1f4be; 內存配置優化InnoDB緩…

Unity 3D碰撞器

在Unity中&#xff0c;碰撞器&#xff08;Collider&#xff09;是用于檢測物體之間碰撞的組件&#xff0c;它們定義了物體的物理邊界。碰撞器與剛體&#xff08;Rigidbody&#xff09;配合使用&#xff0c;實現物理模擬。下面我將按您的要求&#xff0c;從碰撞器的種類、常用參…