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

Redis進(jìn)階 - Redis持久化

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

原文首更地址,閱讀效果更佳!

Redis進(jìn)階 - Redis持久化 | CoderMast編程桅桿https://www.codermast.com/database/redis/redis-advance-persistence.html

單點(diǎn)Redis的問(wèn)題

  • 數(shù)據(jù)丟失問(wèn)題:Redis 是內(nèi)存存儲(chǔ),服務(wù)重啟可能會(huì)丟失數(shù)據(jù)。通過(guò)實(shí)現(xiàn) Redis 數(shù)據(jù)持久化解決。
  • 并發(fā)能力問(wèn)題:?jiǎn)喂?jié)點(diǎn) Redis 并發(fā)能力雖然不錯(cuò),但是也無(wú)法滿足如 618 這樣的高并發(fā)場(chǎng)景。搭建主從集群,實(shí)現(xiàn)讀寫(xiě)分離解決。
  • 故障恢復(fù)問(wèn)題:如果 Redis 宕機(jī),則服務(wù)不可用,需要一種自動(dòng)的故障恢復(fù)手段。利用 Redis 哨兵,實(shí)現(xiàn)健康檢測(cè)和自動(dòng)恢復(fù)。
  • 存儲(chǔ)能力問(wèn)題:Redis 基于內(nèi)存,單點(diǎn)能存儲(chǔ)的數(shù)據(jù)量難以滿足海量數(shù)據(jù)需求。搭建分片集群,利用插槽機(jī)制實(shí)現(xiàn)動(dòng)態(tài)擴(kuò)容。

#RDB持久化

RDB 全稱(chēng)為 Redis Database Backup file (Redis 數(shù)據(jù)備份文件),也被叫做 Redis 數(shù)據(jù)快照。簡(jiǎn)單來(lái)說(shuō)就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤(pán)中。當(dāng) Redis 實(shí)例故障重啟后,從磁盤(pán)讀取快照文件,恢復(fù)數(shù)據(jù)。

快照文件稱(chēng)為 RDB 文件,默認(rèn)是保存在當(dāng)前運(yùn)行目錄。

  • save命令:創(chuàng)建 RDB 快照,由 Redis 主進(jìn)程來(lái)執(zhí)行,會(huì)阻塞所有命令。RDB 是需要寫(xiě)入磁盤(pán)中,IO 操作較慢。
  • bgsave命令:開(kāi)啟子進(jìn)程執(zhí)行 RDB ,避免主進(jìn)程受到影響。

Redis 停機(jī)時(shí)會(huì)執(zhí)行一次 RDB 。

默認(rèn)情況下會(huì)在當(dāng)前目錄生成一個(gè) dump.rdb 的文件,下一次啟動(dòng) Redis 時(shí),默認(rèn)會(huì)加載這個(gè)文件,恢復(fù) Redis 數(shù)據(jù)。

Redis 內(nèi)部有觸發(fā) RDB 的機(jī)制,可以在 redis.conf 文件中找到,格式如下:

<span style="color:#2c3e50"><code>save 900 1      // 900 秒內(nèi),如果至少有 1 個(gè) key 被修改,則執(zhí)行 bgsave
save 300 10     // 300 秒內(nèi),如果至少有 10 個(gè) key 被修改,則執(zhí)行 bgsave
save 60 10000   // 60 秒內(nèi),如果至少有 10000 個(gè) key 被修改,則執(zhí)行 bgsave
save ""         // 表示禁用 RDB

rdbcompression yes  // 是否壓縮,建議不開(kāi)啟,壓縮也會(huì)消耗 CPU ,磁盤(pán)空間相對(duì)廉價(jià)
dbfilename dump.rdb // RDB 文件名稱(chēng)
dir ./              // 文件保存的路徑目錄
</code></span>

bgsave 開(kāi)始時(shí)會(huì) fork 主進(jìn)程得到子進(jìn)程,子進(jìn)程共享主進(jìn)程的內(nèi)存數(shù)據(jù)。完成 fork 后讀取內(nèi)存數(shù)據(jù)并寫(xiě)入 RDB 文件。

fork 過(guò)程是阻塞的,此時(shí) Redis 無(wú)法響應(yīng)客戶端請(qǐng)求。fork 的速度是非??斓模?yàn)?fork 只復(fù)制了對(duì)應(yīng)的頁(yè)表,而不是復(fù)制真實(shí)的數(shù)據(jù),類(lèi)似于只復(fù)制數(shù)據(jù)的索引。

fork 采用的是 copy-on-write 技術(shù):

  • 當(dāng)主進(jìn)程執(zhí)行讀操作時(shí),訪問(wèn)共享內(nèi)存
  • 當(dāng)主進(jìn)程執(zhí)行寫(xiě)操作時(shí),則會(huì)拷貝一份數(shù)據(jù),執(zhí)行寫(xiě)操作。

Redis進(jìn)階 - Redis持久化

?

極端情況

當(dāng)子進(jìn)程寫(xiě)新的 RDB 文件時(shí),此時(shí)主進(jìn)程大量修改數(shù)據(jù),則需要對(duì)數(shù)據(jù)進(jìn)行拷貝,當(dāng)主進(jìn)程需要對(duì)所有的數(shù)據(jù)都進(jìn)行修改時(shí),則需要兩倍原來(lái)的內(nèi)存,故我們?cè)谂渲?Redis 服務(wù)時(shí),不能將所有的實(shí)際內(nèi)存分配給 Redis ,需要預(yù)留一部分緩沖空間。

RDB 持久化小結(jié):

RDB 方式 bgsave 的流程:

  1. fork 主進(jìn)程得到一個(gè)子進(jìn)程,共享內(nèi)存空間
  2. 子進(jìn)程讀取內(nèi)存數(shù)據(jù)并寫(xiě)入新的 RDB 文件
  3. 用新的 RDB 文件替換舊的 RDB 文件

RDB 會(huì)在什么時(shí)候執(zhí)行?save 60 1000代表什么含義?

  • 默認(rèn)是在 Redis 服務(wù)停止時(shí)執(zhí)行 RDB。
  • save 60 10000代表60秒內(nèi)至少執(zhí)行 1000 次修改則觸發(fā) RDB

RDB 的缺點(diǎn)?

  • RDB 執(zhí)行間隔時(shí)間長(zhǎng),兩次 RDB 之間寫(xiě)入數(shù)據(jù)有丟失的風(fēng)險(xiǎn)
  • fork 子進(jìn)程、壓縮、寫(xiě)出 RDB 文件都比較耗時(shí)

#AOF持久化

AOF 全稱(chēng)為 Append Only File(追加文件)。Redis 處理的每一個(gè)寫(xiě)命令都會(huì)記錄在 AOF 文件,可以看做是命令日志文件。

AOF 默認(rèn)是關(guān)閉的,需要修改 redis.conf 配置文件來(lái)開(kāi)啟 AOF

<span style="color:#2c3e50"><code>appendonly yes  // 是否開(kāi)啟 AOF 功能,默認(rèn)是關(guān)閉的
appendfilename "appendonly.aof" // AOF 的文件名稱(chēng)
</code></span>

AOF 的命令記錄的頻率也可以通過(guò) redis.conf 文件來(lái)進(jìn)行配置:

<span style="color:#2c3e50"><code>appendfsync always      // 表示每執(zhí)行一次寫(xiě)命令,立刻記錄到 AOF 文件中 
appendfsync everysec    // 寫(xiě)命令執(zhí)行完先放入 AOF 緩沖區(qū),然后每隔 1 秒將緩沖區(qū)數(shù)據(jù)寫(xiě)入到 AOF 文件,是默認(rèn)方案
appendfsync no          // 寫(xiě)命令執(zhí)行完先放入 AOF 緩沖區(qū),由操作系統(tǒng)決定何時(shí)將緩沖區(qū)內(nèi)容寫(xiě)回磁盤(pán)
</code></span>
配置項(xiàng) 刷盤(pán)時(shí)機(jī) 優(yōu)點(diǎn) 缺點(diǎn)
Always 同步刷盤(pán) 可靠性高,幾乎不丟數(shù)據(jù) 性能影響大
everysec 每秒刷盤(pán) 性能適中 最多丟失1秒數(shù)據(jù)
no 操作系統(tǒng)控制 性能最好 可靠性差,可能丟失大量數(shù)據(jù)

AOF 是記錄命令,AOF 文件會(huì)比 RDB 文件大很多。而且 AOF 會(huì)記錄對(duì)同一個(gè) key 的 多次寫(xiě)操作,但只有最后一次寫(xiě)操作才有意義。通過(guò)執(zhí)行 bgrewriteaof 命令,可以讓 AOF 文件執(zhí)行重寫(xiě)功能,用最少的命令達(dá)到相同效果。

Redis進(jìn)階 - Redis持久化

?

Redis 也會(huì)在觸發(fā)閾值時(shí)自動(dòng)去重寫(xiě) AOF 文件。閾值也可以在 redis.conf 中配置:

<span style="color:#2c3e50"><code>auto-aof-rewrite-percentage 100 // AOF 文件比上次文件增長(zhǎng)多少百分比,則觸發(fā)重寫(xiě)
auto-aof-rewrite-min-size 64mb  // AOF 文件體積最小多大以上才觸發(fā)重寫(xiě)
</code></span>

#RDB與AOF對(duì)比

RDB和AOF各有自己的優(yōu)缺點(diǎn),如果對(duì)數(shù)據(jù)安全性要求較高,在實(shí)際開(kāi)發(fā)中往往會(huì)結(jié)合兩者來(lái)使用。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-499926.html

持久化方式 數(shù)據(jù)完整性 文件大小 宕機(jī)恢復(fù)速度 數(shù)據(jù)恢復(fù)優(yōu)先級(jí) 系統(tǒng)資源占用 使用場(chǎng)景
RDB 定時(shí)對(duì)整個(gè)內(nèi)存做快照 不完整,兩次備份之間會(huì)丟失 會(huì)有壓縮,文件體積小 很快 低,因?yàn)閿?shù)據(jù)完整性不如AOF 高,大量CPU和內(nèi)存消耗
AOF 記錄每一次執(zhí)行的命令 相對(duì)完整,取決于刷盤(pán)策略 記錄命令,文件體積很大 高,因?yàn)閿?shù)據(jù)完整性更高 低,主要是磁盤(pán)IO資源但AOF重寫(xiě)時(shí)會(huì)占用大量CPU和內(nèi)存資源

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

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

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

相關(guān)文章

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

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

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

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

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

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

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

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

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

    2024年02月14日
    瀏覽(28)
  • redis持久化【RDB+AOF】持久化雙雄

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

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

    2024年02月08日
    瀏覽(48)
  • 全面解析 Redis 持久化:RDB、AOF與混合持久化

    前言: 每次你在游戲中看到玩家排行榜,或者在音樂(lè)應(yīng)用中瀏覽熱門(mén)歌單,有沒(méi)有想過(guò)這個(gè)排行榜是如何做到實(shí)時(shí)更新的?當(dāng)然,依靠 Redis 即可做到。 在技術(shù)領(lǐng)域,我們經(jīng)常聽(tīng)到 「鍵值存儲(chǔ)」 這個(gè)詞。但在 Redis 的世界里,這只是冰山一角。Redis 的對(duì)象,不僅僅是簡(jiǎn)單的數(shù)據(jù)

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

    【Redis】Redis 持久化

    Redis有兩種持久化方案: RDB持久化 AOF持久化 RDB 全稱(chēng) Redis Database Backup file(Redis數(shù)據(jù)備份文件),也被叫做 Redis 數(shù)據(jù)快照。簡(jiǎn)單來(lái)說(shuō)就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤(pán)中。當(dāng) Redis 實(shí)例故障重啟后,從磁盤(pán)讀取快照文件,恢復(fù)數(shù)據(jù)??煺瘴募Q(chēng)為 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ù)肯定被會(huì)操作系統(tǒng)從內(nèi)存中清掉。當(dāng)然,redis本身默認(rèn)采用了一種持久化方式,即RDB (Redis DataBase),可以在redis的目錄中找到dump.rdb文件,這就是

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

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

    2023年04月20日
    瀏覽(27)
  • 【Redis】Redis持久化方式

    【Redis】Redis持久化方式

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

    2024年02月02日
    瀏覽(30)
  • Redis 持久化-RDB和 持久化-AOF 的詳細(xì)介紹以及區(qū)別

    Redis 持久化-RDB和 持久化-AOF 的詳細(xì)介紹以及區(qū)別

    在線文檔: https://redis.io/topics/persistence RDB(Redis DataBase) AOF(Append Of File) 在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫(xiě)入磁盤(pán), 也就Snapshot 快照,恢復(fù)時(shí)將快照文件讀到內(nèi)存 RDB 及其執(zhí)行流程 對(duì)上圖的解讀 具體流程如下: redis 客戶端執(zhí)行bgsave 命令或者自動(dòng)觸發(fā)bgsave 命令;

    2024年02月09日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包