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

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF

這篇具有很好參考價值的文章主要介紹了redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

接上一篇RDB,本篇看下Redis數(shù)據(jù)持久化的第二種方式AOF。

目錄

一、AOF原理

1、寫入機(jī)制:

2、緩沖機(jī)制:

3、重寫機(jī)制?:

4、運(yùn)行流程

二、AOF文件配置

1、開啟AOF:

2、自動觸發(fā)AOF重寫?

3、重寫規(guī)則:

三、AOF的備份恢復(fù):

1、正?;謴?fù):

2、異?;謴?fù):

四、重寫流程:

五、AOF優(yōu)缺點(diǎn):

1、優(yōu)點(diǎn):

2、缺點(diǎn):


一、AOF原理

?AOF 日志存儲的是 Redis 服務(wù)器的順序指令序列,AOF 日志只記錄對內(nèi)存進(jìn)行修改的指令記錄。假設(shè) AOF 日志記錄了自 Redis 實(shí)例創(chuàng)建以來所有的修改性指令序列,那么就可以通過對一個空的 Redis 實(shí)例順序執(zhí)行所有的指令,也就是「重放」,來恢復(fù) Redis 當(dāng)前實(shí)例的內(nèi)存數(shù)據(jù)結(jié)構(gòu)的狀態(tài)。

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

1、寫入機(jī)制:

Redis 在收到客戶端修改命令后,先進(jìn)行相應(yīng)的校驗(yàn),如果沒問題,就立即將該命令存追加到 .aof 文件中,也就是先存到磁盤中,然后服務(wù)器再執(zhí)行命令。這樣就算遇到了突發(fā)的宕機(jī)情況情況,也只需將存儲到 .aof 文件中的命令,進(jìn)行一次“命令重演”就可以恢復(fù)到宕機(jī)前的狀態(tài)。

2、緩沖機(jī)制:

在上述執(zhí)行過程中,有一個很重要的環(huán)節(jié)就是命令的寫入,這是一個 IO 操作。Redis 為了提升寫入效率,它不會將內(nèi)容直接寫入到磁盤中,而是將其放到一個內(nèi)存緩存區(qū)(buffer)中,等到緩存區(qū)被填滿時采用異步真正將緩存區(qū)中的內(nèi)容寫入到磁盤里,Linux 系統(tǒng)的 fsync() 函數(shù)可以將指定文件的內(nèi)容從內(nèi)核緩存刷到硬盤中。

?但是如果機(jī)器突然宕機(jī),AOF 日志內(nèi)容可能還沒有來得及完全刷到磁盤中,這個時候就會出現(xiàn)日志丟失。Redis 為數(shù)據(jù)的安全性考慮,同樣為 AOF 持久化提供了策略配置appendfsync:有三個選項,見第二部分配置參數(shù)

3、重寫/壓縮機(jī)制?:

Redis 在長期運(yùn)行的過程中,aof 文件會越變越長。如果機(jī)器宕機(jī)重啟,“重演”整個 aof 文件會非常耗時,導(dǎo)致長時間 Redis 無法對外提供服務(wù)。為了讓 aof 文件的大小控制在合理的范圍內(nèi),Redis 提供了 AOF 重寫機(jī)制

(1)自動觸發(fā)AOF重寫:Redis 為自動觸發(fā) AOF 重寫功能,提供了相應(yīng)的配置策略,默認(rèn)配置

? ?redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

該配置項表示:觸發(fā)重寫所需要的 aof 文件體積百分比,只有當(dāng) aof 文件的增量大于 100% 時才進(jìn)行重寫,也就是大一倍。比如,第一次重寫時文件大小為 64M,那么第二次觸發(fā)重寫的體積為 128M,第三次重寫為 256M,以此類推。如果將百分比值設(shè)置為 0 就表示關(guān)閉 AOF 自動重寫功能。

(2)手動執(zhí)行BGREWRITEAOF命令,這個命令通過移除AOF文件中的冗余命令來重寫AOF文件

127.0.0.1:6379> BGREWRITEAOF
Background append only file rewriting started

新的 aof 文件記錄的數(shù)據(jù)庫數(shù)據(jù)和原 aof 文件記錄的數(shù)據(jù)庫數(shù)據(jù)完全一致;
新的 aof 文件會使用盡可能少的命令來記錄數(shù)據(jù)庫數(shù)據(jù),因此新的 aof 文件的體積會小很多;
AOF 重寫期間,服務(wù)器不會被阻塞,它可以正常處理客戶端發(fā)送的命令。
即使 Bgrewriteaof 執(zhí)行失敗,也不會有任何數(shù)據(jù)丟失,因?yàn)榕f的 AOF 文件在 Bgrewriteaof 成功之前不會被修改

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

4、運(yùn)行流程

(1)客戶端的請求寫命令會被append追加到AOF緩沖區(qū)內(nèi)
(2)AOF緩沖區(qū)會根據(jù)AOF持久化策略[always,everysec,no]將操作sync同步到磁盤的AOF文件中
(3)AOF文件大小超過重寫策略或手動重寫時,會對AOF文件進(jìn)行重寫(rewrite),壓縮AOF文件容量
(4)redis服務(wù)器重啟時,會重新load加載AOF文件中的寫操作達(dá)到數(shù)據(jù)恢復(fù)的目的。

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

二、AOF文件配置
1、開啟AOF:

?AOF默認(rèn)不開啟,可以在 redis.conf 文件中對AOF進(jìn)行配置開啟:

??redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

appendonly no # 是否開啟AOF,yes:開啟,no:不開啟,默認(rèn)為no
appendfilename "appendonly.aof" # aof文件名稱,默認(rèn)為appendonly.aof
dir ./ # aof文件所在目錄,默認(rèn)./,表示執(zhí)行啟動命令時所在的目錄
2、自動觸發(fā)AOF重寫/壓縮?

見原理部分。

3、appendfsync同步頻率:

默認(rèn)為Everysec,有三個選項

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

(1)Always:服務(wù)器每寫入一個命令,就調(diào)用一次 fsync函數(shù),將緩沖區(qū)里面的命令寫入到硬盤。這種模式下,服務(wù)器出現(xiàn)故障,也不會丟失任何已經(jīng)成功執(zhí)行的命令數(shù)據(jù),但是其執(zhí)行速度較慢;
(2)Everysec(默認(rèn)):服務(wù)器每一秒調(diào)用一次 fsync 函數(shù),將緩沖區(qū)里面的命令寫入到硬盤。這種模式下,服務(wù)器出現(xiàn)故障,最多只丟失一秒鐘內(nèi)的執(zhí)行的命令數(shù)據(jù),通常都使用它作為 AOF 配置策略;
(3)No:服務(wù)器不主動調(diào)用 fsync 函數(shù),由操作系統(tǒng)決定何時將緩沖區(qū)里面的命令寫入到硬盤。這種模式下,服務(wù)器遭遇意外停機(jī)時,丟失命令的數(shù)量是不確定的,所以這種策略,不確定性較大,不安全。

4、重寫/壓縮規(guī)則:

no-appendfsync-on-rewrite:重寫時,不會執(zhí)行appendfsync操作

no-appendfsync-on-rewrite no

?該參數(shù)表示在正在進(jìn)行AOF重寫時不會將AOF緩沖區(qū)中的數(shù)據(jù)同步到舊的AOF文件磁盤,也就是說在進(jìn)行AOF重寫的時候,如果此時有寫操作進(jìn)來,此時寫操作的命令會放在aof_buf緩存中(內(nèi)存中),而不會將其追加到舊的AOF文件中,這么做是為了避免同時寫舊的AOF文件和新的AOF文件對磁盤產(chǎn)生的壓力。
(1)默認(rèn)是ON,表示關(guān)閉,即在AOF重寫時,會對AOF緩沖區(qū)中的數(shù)據(jù)做同步磁盤操作,這在很大程度上保證了數(shù)據(jù)的安全性。但是遇到重寫操作,可能會發(fā)生阻塞。(數(shù)據(jù)安全,但是性能降低)

(2)如果no-appendfsync-on-rewrite為yes,不寫入aof文件,只寫入緩存,用戶請求不會阻塞,但是在這段時間如果宕機(jī)會丟失這段時間的緩存數(shù)據(jù)。(降低數(shù)據(jù)安全性,提高性能)。

但在數(shù)據(jù)量很大的場景,因?yàn)閮烧叨紩拇疟PIO,對磁盤的影響較大,可以將其設(shè)置為“yes”減輕磁盤壓力,但在極端情況下可能丟失整個AOF重寫期間的數(shù)據(jù)。

三、AOF的備份恢復(fù):

AOF的備份機(jī)制和性能雖然和RDB不同,但是備份和恢復(fù)的操作同RDB一樣,都是拷貝備份文件,需要恢復(fù)時再拷貝到Redis工作目錄下,啟動系統(tǒng)即加載。

1、正?;謴?fù):

(1)修改默認(rèn)的appendonly no,改為yes

(2)將有數(shù)據(jù)的aof文件復(fù)制一份保存到對應(yīng)的目錄(查看目錄:config get dir)

(3)恢復(fù):重啟redis然后重新加載

2、異常恢復(fù):

(1)修改默認(rèn)的appendonly no,改為yes

(2)如遇到aof文件損壞,通過?redis-check-aof --fix appendonly.aof?進(jìn)行恢復(fù),appendonly.aof是文件名

redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

四、重寫流程:

1、手動執(zhí)行 bgrewriteaof命令觸發(fā)重寫,判斷是否當(dāng)前有bgfsave或bgrewriteaof在運(yùn)行,如果有,則等待該命令結(jié)束后再繼續(xù)執(zhí)行
2、主進(jìn)程fork出子進(jìn)程執(zhí)行重寫操作,保證主進(jìn)程不會阻塞
3、子進(jìn)程遍歷redis內(nèi)存中的數(shù)據(jù)到臨時文件,客戶端的寫請求同時寫入aof_buf緩沖區(qū)和aof_rewrite_buf重寫緩沖區(qū)保證原AOF文件完整性以及新AOF文件生成期間的新的數(shù)據(jù)修改動作不會丟失
4、子進(jìn)程寫完新的AOF文件后,向主進(jìn)程發(fā)送信號,父進(jìn)程更新統(tǒng)計信息
5、主進(jìn)程把a(bǔ)of_rewrite_buf中的數(shù)據(jù)寫入到新的AOF文件
6、使用新的AOF文件覆蓋舊的AOF文件,完成AOF重寫
redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF,redis,redis,java

五、AOF優(yōu)缺點(diǎn):
1、優(yōu)點(diǎn):

(1)備份機(jī)制更穩(wěn)健,丟失數(shù)據(jù)概率更低

(2)可讀的日志文本,通過操作AOF文件,可以處理誤操作

2、缺點(diǎn):

(1)比RDB占用更多的磁盤空間

(2)恢復(fù)備份速度要慢

(3)每次讀寫都同步的話,有一定的性能壓力

(4)存在個別bug,造成不能恢復(fù)文章來源地址http://www.zghlxwxcb.cn/news/detail-805977.html

到了這里,關(guān)于redis數(shù)據(jù)安全(三)數(shù)據(jù)持久化 AOF的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(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)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

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

相關(guān)文章

  • 【Redis】——AOF持久化

    【Redis】——AOF持久化

    AOF日志是redis為數(shù)據(jù)的持久化提供了的一個技術(shù),日志里面記錄著執(zhí)行redis寫命令。 每當(dāng)r edis執(zhí)行一條寫命令的時候,就會將該命令記錄 到AOF日志當(dāng)中 。 當(dāng)redis啟動的時候,可以加載AOF日志中的所有指令,并執(zhí)行這些指令恢復(fù)所有的數(shù)據(jù)。 在 Redis 中 AOF 持久化功能默認(rèn)是不開

    2024年02月13日
    瀏覽(30)
  • Redis 持久化——AOF

    Redis 持久化——AOF

    使用 RDB 持久化有一個風(fēng)險,它可能會造成最新數(shù)據(jù)丟失的風(fēng)險。因?yàn)?RDB 的持久化有一定的時間間隔,在這個時間段內(nèi)如果 Redis 服務(wù)意外終止的話,就會造成最新的數(shù)據(jù)全部丟失。 可能會操作 Redis 服務(wù)意外終止的條件: 安裝 Redis 的機(jī)器停止運(yùn)行,藍(lán)屏或者系統(tǒng)崩潰; 安裝

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

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

    2024年03月10日
    瀏覽(34)
  • redis 持久化 RDB + AOF

    redis 持久化 RDB + AOF

    RDB(Redis DataBase)和AOF(Append Only File) RDB,簡而言之,就是在不同的時間點(diǎn),將redis存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上 AOF,那就是將redis執(zhí)行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到后再重復(fù)執(zhí)行一遍,就可以實(shí)現(xiàn)數(shù)據(jù)恢復(fù)了。

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

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

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

    2024年02月09日
    瀏覽(32)
  • Redis 持久化RDB和AOF

    Redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看總結(jié)。本章節(jié)通過配置文件,觸發(fā)快照的方式,恢復(fù)數(shù)據(jù)的操作,命令操作演示,優(yōu)缺點(diǎn)來學(xué)習(xí) Redis 的重點(diǎn)知識 持久化 。 RDB 是 Redis 默認(rèn)的持久化

    2024年02月14日
    瀏覽(22)
  • Redis_持久化(AOF、RDB)

    Redis_持久化(AOF、RDB)

    目前,redis的持久化主要應(yīng)用AOF(Append Only File)和RDF兩大機(jī)制,AOF以日志的形式來記錄每個寫操作(增量保存),將redis執(zhí)行過的所有指令全部安全記錄下來(讀操作不記錄)。只許追加文件,但不可以改寫文件,redis啟動之初,會讀取該文件,重新構(gòu)建數(shù)據(jù)。 AOF默認(rèn)不開啟

    2024年02月13日
    瀏覽(23)
  • Redis持久化(RDB和AOF)

    目錄 方式一:RDB 方式二:AOF AOF重寫可能出現(xiàn)的問題及解決方案 方式三:RDB-AOF混合持久化 Redis持久化 :Redis是基于內(nèi)存數(shù)據(jù)庫,宕機(jī)后和數(shù)據(jù)會消失,當(dāng)Redis用作DB 時,DB數(shù)據(jù)要完整,所以一定要有一個完整的數(shù)據(jù)源文件,在系統(tǒng)啟動時,從這個完整的數(shù)據(jù)源中將數(shù)據(jù)load到

    2024年02月16日
    瀏覽(22)
  • Redis優(yōu)化 RDB AOF持久化

    Redis優(yōu)化 RDB AOF持久化

    ---------------------- Redis 高可用 ---------------------------------------- 在web服務(wù)器中,高可用是指服務(wù)器可以正常訪問的時間,衡量的標(biāo)準(zhǔn)是在多長時間內(nèi)可以提供正常服務(wù)(99.9%、99.99%、99.999%等等)。 但是在Redis語境中,高可用的含義似乎要寬泛一些,除了保證提供正常服務(wù)(如主

    2024年02月09日
    瀏覽(27)
  • 【Redis】Redis持久化機(jī)制RDB與AOF

    【Redis】Redis持久化機(jī)制RDB與AOF

    目錄 一、RDB 1、概念 2、RDB文件保存 3、執(zhí)行RDB 4、觸發(fā)RDB 5、fork原理 6、RDB的缺點(diǎn) 二、AOF 1、概念 2、開啟AOF 3、觸發(fā)AOF 4、觸發(fā)重寫AOF 三、區(qū)別 RDB全稱為Redis Database Backup File(Redis數(shù)據(jù)備份文件),也叫做Redis數(shù)據(jù)快照。簡單的來說就是把某一時刻Redis內(nèi)存里的數(shù)據(jù)都記錄到磁

    2024年02月08日
    瀏覽(40)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包