国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Redis】理論進(jìn)階篇------Redis的持久化

這篇具有很好參考價(jià)值的文章主要介紹了【Redis】理論進(jìn)階篇------Redis的持久化。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、前言

? ? ?前面學(xué)習(xí)了Redis的相關(guān)的十大數(shù)據(jù)類型以及用SpringBoot集成我們的Redis的工具代碼的書寫。從這篇文章開始,就會從Redis相關(guān)的一些理論(也是面試和工作的熱點(diǎn)知識)如:Redis的持久化、Redis的訂閱發(fā)布模型、Redis集群環(huán)境搭建、哨兵模式等等方面介紹Redis相關(guān)的進(jìn)階知識。希望對各位小伙伴能有所幫助。

二、Redis的持久化

1、為什么會有Redis的持久化

首先Redis是我們的緩存,是一種內(nèi)存數(shù)據(jù)庫,如果我們存儲數(shù)據(jù)的時(shí)候,不將數(shù)據(jù)庫狀態(tài)儲存到磁盤中,那么服務(wù)器一旦宕機(jī)、進(jìn)程出現(xiàn)錯(cuò)誤。服務(wù)器中的數(shù)據(jù)也會隨之消失。所以為Redis提供持久化的功能是必不可少的!

2、Redis的持久化是什么

官網(wǎng)原話:

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存上面是官方對Redis持久化做出的解釋,我們不難看出Redis的持久化就是將數(shù)據(jù)寫入磁盤。而其中的關(guān)鍵操作其實(shí)是RDB與AOF。接下來會其詳細(xì)展開介紹。

3、RDB

1、什么是RDB

Redis Database用官網(wǎng)的話說就是:在指定的時(shí)間間隔內(nèi)將內(nèi)存中數(shù)據(jù)集快照(Snapshot? 像照相機(jī)那樣咔嚓一下)寫入磁盤,如果要恢復(fù)數(shù)據(jù)集則將快照文件讀取到內(nèi)存中。

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存工作流程:redis中會有一個(gè)父進(jìn)程,正常的處理client發(fā)出的各種請求,此時(shí)如果要觸發(fā)RDB生成RDB文件,則可以通過配置文件修改觸發(fā)的操作我們稱為自動觸發(fā)、或則通過save和bgsave指令來手動觸發(fā)來實(shí)現(xiàn)數(shù)據(jù)備份。此時(shí)父進(jìn)程就會產(chǎn)生(fork)一個(gè)子進(jìn)程來實(shí)現(xiàn)持久化,會先將數(shù)據(jù)寫入一個(gè)臨時(shí)文件中,待持久化結(jié)束后,再用這個(gè)臨時(shí)文件代替上次持久化好的文件(rdb保存的文件就是一個(gè)dump.rdb文件)。整個(gè)過程主進(jìn)程不進(jìn)行 任何IO操作,確保了極高的性能。

2、RDB的觸發(fā)

①RDB的自動觸發(fā)

首先我們找到我們Redis下載的文件目錄,我們找到以.conf結(jié)束的文件:

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存

打開這個(gè)文件找到我們的快照Snapshot?

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存

正如Redis的配置文件所示?save <seconds> <changes>,當(dāng)我們的時(shí)間間隔大于等于設(shè)置的seconds,修改次數(shù)大于等于changes時(shí),Redis會自動觸發(fā)RDB,生成對應(yīng)的dump.rdb文件。

②RDB的手動觸發(fā)

既然有自動觸發(fā),為什么需要手動觸發(fā)呢。因?yàn)樽詣佑|發(fā)是規(guī)定操作內(nèi)生成dump.rdb文件,但是如果有非常重要的數(shù)據(jù)需要及時(shí)存儲,但是又不滿足自動觸發(fā)的需求。這時(shí)Redis官方,就為我們提供了save和bgsave兩種手動觸發(fā)的操作來 生成RDB文件。

a.save指令

用戶可以通過執(zhí)行SAVE命令,要求Redis服務(wù)器以同步方式創(chuàng)建出一個(gè)記錄了服務(wù)器當(dāng)前所有數(shù)據(jù)庫數(shù)據(jù)的RDB文件。而且再持久化完成save指令的整個(gè)期間內(nèi),Redis都不能處理 其他的命令。SAVE命令是一個(gè)無參數(shù)命令,它在創(chuàng)建RDB文件成功時(shí)將返回OK作為結(jié)果。(注:線上禁止使用,不推薦)

b.bgsave

Redis會在后臺異步進(jìn)行拍照操作,不阻塞快照同時(shí)還可以響應(yīng)客戶端的請求,該持久化化會fork一個(gè)子進(jìn)程,由子進(jìn)程復(fù)制持久化的過程(父進(jìn)程與子進(jìn)程各做各的,會不干擾)。

③總結(jié)rdb文件的觸發(fā)

1:通過我們的各種觸發(fā)操作,會自動觸發(fā)rdb規(guī)則;

2:除了以上,執(zhí)行flushdb/flushall命令,也會觸發(fā)rdb規(guī)則(為了保證數(shù)據(jù)的完整性,但是文件里面是空白的);

3:退出redis,也會產(chǎn)生rdb文件。

4:主從復(fù)制時(shí),主節(jié)點(diǎn)自動觸發(fā)。

3、RDB的恢復(fù)

從以下方面恢復(fù)數(shù)據(jù)

①:只需將rdb文件放在我們Redis的啟動目錄下,redis啟動時(shí)候會自動檢查dump.rdb文件恢復(fù)其數(shù)據(jù);

②:物理恢復(fù),一定服務(wù)和備份分機(jī)隔離。(PS:不可以把備份dump.rdb文件和產(chǎn)生redis的服務(wù)器放在同一臺機(jī)器,必須分開存儲,以防生產(chǎn)機(jī)物理損壞后備份文件也掛了)

4、AOF

1、什么是AOF

Append Only File用通俗的話來講:以日志的形式來記錄每個(gè)寫操作,將Redis執(zhí)行的所以寫操作指令記錄下來(讀操作不記錄)。當(dāng)重啟Redis的時(shí)候會將新的持久化的日志文件中的數(shù)據(jù)恢復(fù)。

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存

Redis中AOF的操作流程:

①:Client作為命令的操作者,會在redis中不斷書寫各種指令命令;

②:Redis并不會直接將這些指令命令直接寫入AOF文件,而是先寫在一個(gè)臨時(shí)的AOF文件中(其實(shí)是一個(gè)緩沖區(qū))。當(dāng)這個(gè)臨時(shí)文件的數(shù)量足夠多時(shí),再寫入磁盤,避免了頻繁的IO操作;

③:AOF的臨時(shí)文件會根據(jù)三種寫回策略(后面解釋)將命令寫入磁盤上的AOF文件中;

④:當(dāng)AOF文件中的內(nèi)容越來越多時(shí),會執(zhí)行AOF重寫,起到AOF文件壓縮的目的。

⑤:當(dāng)Redis重啟的時(shí)候會將AOF中的數(shù)據(jù)重新載入。

2、AOF中的常見配置指令

我們像RDB一樣,找到AOF的配置文件,介紹相關(guān)指令:

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存1:appendonly no?

默認(rèn)不開啟,我們需要手動進(jìn)行配置,將"no"->"yes"

2:appendfilename "appendonly.aof"

表示修改的生成的aof文件的名稱

3:三種回寫策略機(jī)制

appendfsync always:同步回寫,優(yōu):可靠性高,數(shù)據(jù)基本不丟失;缺:是一個(gè)極端,每個(gè)命令都要寫到磁盤,性能影響大。
appendfsync everysec:每秒回寫,優(yōu):性能適中;缺:宕機(jī)時(shí),丟失一秒類數(shù)據(jù)。(Redis默認(rèn))
appendfsync no:OS控制的回寫,優(yōu):新能好;缺:也是一個(gè)極端,宕機(jī)時(shí),丟失數(shù)據(jù)數(shù)據(jù)較多。

4:AOF文件重寫規(guī)則

首先aof默認(rèn)文件無限追加,這樣文件就會越來越大。

同時(shí)滿足以下的關(guān)系,才會觸發(fā)AOF的重寫:

auto-aof-rewrite-percentage 100:根據(jù)上次重寫后的aof大小,判斷當(dāng)前aof是不是增長了一倍
auto-aof-rewrite-min-size 64mb:如果aof文件大于64M,fork一個(gè)子進(jìn)程來將我們文件進(jìn)行重寫

三、RDB與AOF的各自優(yōu)缺點(diǎn)

1、RDB

優(yōu):

①:適合大規(guī)模的數(shù)據(jù)恢復(fù)

②:可以按照業(yè)務(wù)定時(shí)備份

③:對數(shù)據(jù)完整性和一致性要求不高

④:RDB文件在內(nèi)存中加載速度比AOF快的多

缺:

①:在一定時(shí)間內(nèi)做一次備份,如果redis出現(xiàn)宕機(jī)的話,就會丟失從當(dāng)前開始的最近一次快照期間的數(shù)據(jù)

②:內(nèi)存數(shù)據(jù)的全量同步,數(shù)據(jù)量太大,會大量使用IO,影響服務(wù)器性能

③:fork子進(jìn)程的時(shí)候,會占用一定空間,需要考慮內(nèi)存空間的問題

2、AOF

優(yōu):

①更好的保護(hù)數(shù)據(jù)不丟失、性能高、可做緊急恢復(fù)

缺:

①:在相同數(shù)據(jù)集下,aof文件要遠(yuǎn)大于rdb文件,恢復(fù)速度慢?

②:aof的效率慢于rdb,所以redis默認(rèn)的是使用rdb持久化

四、RDB和AOF的混合使用

1、誰的優(yōu)先級大

我們知道Redis默認(rèn)使用的是RDB,那么如果將aof與 rdb同時(shí)開啟,是不是rdb的優(yōu)先級就更大,先加載RDB文件呢?我們先來看個(gè)流程圖:

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存

從該圖中我們可以看出,如果有aof文件,則先加載aof文件;若沒有aof文件而開啟了rdb則先加載rdb文件,如果兩個(gè)都沒開啟,則該怎么執(zhí)行就怎么執(zhí)行。

2、開啟RDB與AOF的混合模式

①:開啟混合方式

aof-use-rdb-preamble yes(默認(rèn)是yes)

②:開啟結(jié)果

PS:前提是開啟AOF。

RDB做全量的持久化,AOF做增量的持久化:即先使用RDB進(jìn)行快照的儲存,然后使用AOF持久化做所有寫的操作,當(dāng)重寫策略滿足或手動觸發(fā)重寫的時(shí)候,將最新的數(shù)據(jù)存儲為新的RDB記錄。

總的來說最后生成的也是aof文件,但是該文件一部分包含了RDB格式,一部分包含了AOF格式。

如下所示:

【Redis】理論進(jìn)階篇------Redis的持久化,Redis,redis,數(shù)據(jù)庫,緩存

五、總結(jié)

最后做一個(gè)總結(jié),首先博主的這篇博客的記錄是學(xué)習(xí)了b站上up主【狂神說JAVA】、【尚硅谷】的redis學(xué)習(xí)視頻后寫的。然后這篇博客也是在以前Redis版本上的基礎(chǔ)上結(jié)合最新的版本完成的。當(dāng)然博主自己寫的這篇博客也是讓我自己對Redis的持久化功能有了更進(jìn)一步的認(rèn)識,我個(gè)人覺得這篇博客對一些常見的關(guān)于Redis的持久化的面試題的回答是涉及的足夠的。如果對正在閱讀的小伙伴有幫助,不要忘記點(diǎn)贊??哦。文章來源地址http://www.zghlxwxcb.cn/news/detail-832590.html

到了這里,關(guān)于【Redis】理論進(jìn)階篇------Redis的持久化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【Redis從入門到進(jìn)階】第 8 講:Redis 持久化之 —— AOF

    【Redis從入門到進(jìn)階】第 8 講:Redis 持久化之 —— AOF

    本文已收錄于專欄 ??《Redis從入門到進(jìn)階》?? ?? 本專欄開啟,目的在于幫助大家更好的掌握學(xué)習(xí) Redis ,同時(shí)也是為了記錄我自己學(xué)習(xí) Redis 的過程,將會從基礎(chǔ)的數(shù)據(jù)類型開始記錄,直到一些更多的應(yīng)用,如緩存擊穿還有分布式鎖等。希望大家有問題也可以一起溝通,歡

    2023年04月25日
    瀏覽(18)
  • Redis數(shù)據(jù)庫持久化---RDB(Redis DataBase)概念與實(shí)操

    一、概念 1redis提供了兩種持久化的方式,分別是RDB(Redis DataBase)和AOF(Append Only File)。 RDB(Redis DataBase):是在不同的時(shí)間點(diǎn),將redis存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上; 特點(diǎn): 1.周期性 2.不影響數(shù)據(jù)寫入 ?#RDB會啟動子進(jìn)程,備份所有數(shù)據(jù)。當(dāng)前進(jìn)程,繼續(xù)提供數(shù)

    2024年02月10日
    瀏覽(22)
  • 非關(guān)系型數(shù)據(jù)庫之Redis 持久化

    非關(guān)系型數(shù)據(jù)庫之Redis 持久化

    目錄 一 Redis 高可用? 1redis高可用技術(shù) 2 持久化的功能: 3 Redis 提供兩種方式進(jìn)行持久化: 二 持久化之RDB 1. 觸發(fā)條件 (1)手動觸發(fā) (2)自動觸發(fā) (3)其他自動觸發(fā)機(jī)制 2. 執(zhí)行流程 3. 啟動時(shí)加載 三 AOF 持久化之AOF 1. 開啟AOF配置 2. 執(zhí)行流程 AOF的執(zhí)行流程包括: (1)命令

    2024年04月10日
    瀏覽(28)
  • 【Java 進(jìn)階篇】Redis持久化之RDB:數(shù)據(jù)的安全守護(hù)者

    【Java 進(jìn)階篇】Redis持久化之RDB:數(shù)據(jù)的安全守護(hù)者

    Redis,作為一款高性能的鍵值存儲系統(tǒng),支持多種持久化方式,其中RDB(Redis DataBase)是其最常用的一種。RDB可以將當(dāng)前時(shí)刻的數(shù)據(jù)快照保存到磁盤,以便在Redis重啟時(shí)快速恢復(fù)數(shù)據(jù)。本文將深入探討RDB的原理、配置和實(shí)際應(yīng)用,幫助初學(xué)者更好地理解和使用Redis的持久化機(jī)制

    2024年02月05日
    瀏覽(33)
  • 【Redis】Redis 持久化

    【Redis】Redis 持久化

    Redis有兩種持久化方案: RDB持久化 AOF持久化 RDB 全稱 Redis Database Backup file(Redis數(shù)據(jù)備份文件),也被叫做 Redis 數(shù)據(jù)快照。簡單來說就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤中。當(dāng) Redis 實(shí)例故障重啟后,從磁盤讀取快照文件,恢復(fù)數(shù)據(jù)??煺瘴募Q為 RDB文件,默認(rèn)是保存在當(dāng)

    2024年02月05日
    瀏覽(35)
  • Redis系列--redis持久化

    Redis系列--redis持久化

    redis本身運(yùn)行時(shí)數(shù)據(jù)保存在內(nèi)存中,如果不進(jìn)行持久化,那么在redis出現(xiàn)非正常原因宕機(jī)或者關(guān)閉redis的進(jìn)程或者關(guān)閉計(jì)算機(jī)后數(shù)據(jù)肯定被會操作系統(tǒng)從內(nèi)存中清掉。當(dāng)然,redis本身默認(rèn)采用了一種持久化方式,即RDB (Redis DataBase),可以在redis的目錄中找到dump.rdb文件,這就是

    2024年02月05日
    瀏覽(30)
  • 【Redis】Redis持久化方式

    【Redis】Redis持久化方式

    Redis 中有兩種持久化方式,分別為 RDB 和 AOF 。 RDB 全稱 Redis Database Backup file ,也叫做 Redis 數(shù)據(jù)快照。簡單來說就是把 Redis 中的數(shù)據(jù)記錄到磁盤中。當(dāng) Redis 實(shí)例故障重啟后,從磁盤讀取快照文件,恢復(fù)數(shù)據(jù)。 RDB有兩種備份方式,一種是主動備份,一種是Redis 內(nèi)部執(zhí)行備份 主

    2024年02月02日
    瀏覽(31)
  • 【Redis】Redis持久化機(jī)制

    Redis是基于內(nèi)存存儲的數(shù)據(jù)庫,如果遇到服務(wù)重啟或者崩潰,內(nèi)存中的數(shù)據(jù)將會被清空。所以為了確保數(shù)據(jù)安全性和可靠性,我們需要將內(nèi)存中的數(shù)據(jù)持久化到磁盤上。 持久化不僅可以防止由于系統(tǒng)故障、重啟或者其他原因?qū)е碌臄?shù)據(jù)丟失。還可以用于備份、數(shù)據(jù)恢復(fù)和遷移

    2023年04月20日
    瀏覽(28)
  • redis持久化【RDB+AOF】持久化雙雄

    redis持久化【RDB+AOF】持久化雙雄

    這是redis系列文章之《redis持久化【RDB+AOF】持久化雙雄》,上一篇文章【redis基礎(chǔ)】redis的十大數(shù)據(jù)類型_努力努力再努力mlx的博客-CSDN博客 感謝大家的支持~ 目錄 RDB 什么是RDB RDB的作用 配置文件關(guān)于RDB部分? 6vs7 操作步驟 修改配置文件(本案例設(shè)置5s修改2次) 修改dump文件的保

    2024年02月08日
    瀏覽(48)
  • Redis兩種持久化方案RDB持久化和AOF持久化

    Redis兩種持久化方案RDB持久化和AOF持久化

    Redis持久化 Redis有兩種持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全稱Redis Database Backup file(Redis數(shù)據(jù)備份文件),也被叫做Redis數(shù)據(jù)快照。簡單來說就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤中。當(dāng)Redis實(shí)例故障重啟后,從磁盤讀取快照文件,恢復(fù)數(shù)據(jù)??煺瘴募Q為RDB文件

    2024年02月14日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包