欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

redis的兩種持久化方式RDB和AOF解讀

 更新時(shí)間:2025年03月04日 09:08:57   作者:L丶小先生  
Redis提供了RDB和AOF兩種持久化方式,RDB是快照持久化,通過(guò)配置文件中的save指令開(kāi)啟和配置,可以設(shè)置觸發(fā)快照的條件,AOF是日志持久化,每次寫(xiě)操作都會(huì)追加到AOF文件中,并可以通過(guò)配置文件設(shè)置持久化頻率和重寫(xiě)策略,RDB和AOF可以結(jié)合使用,以提高數(shù)據(jù)的安全性和恢復(fù)效率

redis兩種持久化方式RDB和AOF

Redis 提供了兩種主要的持久化方式:RDB(Redis Database)和 AOF(Append Only File)。

默認(rèn)情況下,Redis 沒(méi)有開(kāi)啟任何持久化方式,但可以在配置文件(redis.conf)中啟用它們。

RDB持久化

RDB 是一種快照持久化方式,它會(huì)在指定的時(shí)間間隔內(nèi)生成內(nèi)存數(shù)據(jù)的快照并保存到磁盤(pán)上的一個(gè) RDB 文件中,RDB 快照(Snapshot)機(jī)制在每次觸發(fā)快照保存時(shí),都會(huì)生成一個(gè)新的 RDB 文件,這個(gè)新文件會(huì)覆蓋之前保存的 RDB 文件。

以下是 RDB 快照機(jī)制的一些關(guān)鍵點(diǎn):

1、開(kāi)啟/禁用方式

在配置文件的SNAPSHOTTING(快照)模塊中設(shè)置save參數(shù)即可開(kāi)啟,相應(yīng)的禁用RDB持久化只需要不設(shè)置save指令或給save傳入一個(gè)空字符串即可禁用。

2、觸發(fā)機(jī)制

  • 達(dá)到配置文件中save指令指定的觸發(fā)條件
  • 通過(guò)SAVEBGSAVE(異步執(zhí)行) 命令觸發(fā)

3、參數(shù)配置

#900秒內(nèi)有一個(gè)key發(fā)生變化觸發(fā)快照操作
save 900 1
#300秒內(nèi)有10個(gè)key發(fā)生變化觸發(fā)快照操作
save 300 10
# 60秒內(nèi)有10000個(gè)key發(fā)生變化觸發(fā)快照操作
save 60 10000

# 如果配置成no,表示你不在乎數(shù)據(jù)不一致或者有其他的手段發(fā)現(xiàn)和控制這種不一致,那么在快照寫(xiě)入失敗時(shí),也能確保redis繼續(xù)接受新的寫(xiě)請(qǐng)求
stop-writes-on-bgsave-error yes

#rdb快照是否進(jìn)行壓縮,但是會(huì)消耗cpu
rdbcompression yes

# 在存儲(chǔ)快照后,還可以讓redis使用CRC64算法來(lái)進(jìn)行數(shù)據(jù)校驗(yàn),但是這樣做會(huì)增加大約10%的性能消耗,如果希望獲取到最大的性能提升,可以關(guān)閉此功能
rdbchecksum yes

# rdb快照文件名
dbfilename dump.rdb

#存儲(chǔ)位置,默認(rèn)是當(dāng)前路徑
dir ./

4、數(shù)據(jù)安全性

  • 由于 RDB 文件會(huì)覆蓋舊文件,因此在故障恢復(fù)時(shí),你只能恢復(fù)到最后一次成功快照的時(shí)間點(diǎn)的數(shù)據(jù)狀態(tài)。
  • 為了提高數(shù)據(jù)安全性,通常建議結(jié)合使用 AOF(Append Only File)持久化,這樣即使 RDB 文件丟失,AOF 也可以提供更細(xì)粒度的數(shù)據(jù)恢復(fù)。

AOF持久化

AOF 是一種日志持久化方式,它會(huì)記錄每次寫(xiě)操作并追加到 AOF 文件中,Redis的AOF文件在重寫(xiě)(rewrite)過(guò)程中會(huì)被覆蓋。

AOF重寫(xiě)的目的是為了減少AOF文件的大小,并去除那些冗余的、不再必要的命令,使得該文件只包含恢復(fù)當(dāng)前數(shù)據(jù)集所需的最小命令集。

在重寫(xiě)工作完成后,Redis會(huì)將新的AOF文件覆蓋現(xiàn)有的AOF文件,這就相當(dāng)于壓縮了AOF文件,使得AOF文件體積變小了。

以下是 AOF日志機(jī)制的一些關(guān)鍵點(diǎn):

1、開(kāi)啟/禁用方式

在配置文件的APPEND ONLY MODE模塊中把a(bǔ)ppendonly參數(shù)設(shè)置為yes即可開(kāi)啟,設(shè)置為no即禁用。

2、觸發(fā)機(jī)制

每次寫(xiě)操作都會(huì)追加到 AOF 文件中。

3、參數(shù)配置

#開(kāi)啟aof持久化策略,將接收到的每次寫(xiě)操作請(qǐng)求都追加到aof文件中,在redis重啟時(shí),會(huì)加載aof文件,優(yōu)先級(jí)比rdb高
appendonly no

# aof文件名
appendfilename "appendonly.aof"

# 設(shè)置aof持久化頻率
# 有三種選擇
# always 每次寫(xiě)都強(qiáng)制調(diào)用fsync,這種模式下,redis會(huì)相對(duì)較慢,但數(shù)據(jù)最安全
# everysec 每秒啟用一次fsync
# no 不調(diào)用fsync()。而是讓操作系統(tǒng)自行決定sync的時(shí)間。這種模式下,redis的性能會(huì)最快
appendfsync everysec

# 設(shè)置當(dāng)redis在rewrite的時(shí)候,是否允許appendsync。因?yàn)閞edis進(jìn)程在進(jìn)行AOF重寫(xiě)的時(shí)候,fsync()在主進(jìn)程中的調(diào)用會(huì)被阻止,也就是redis的持久化功能暫時(shí)失效。默認(rèn)為no,這樣能保證數(shù)據(jù)安全
no-appendfsync-on-rewrite no

# 設(shè)置自動(dòng)進(jìn)行AOF重寫(xiě)的基準(zhǔn)值,也就是重寫(xiě)啟動(dòng)時(shí)的AOF文件大小,假如redis自啟動(dòng)至今還沒(méi)有進(jìn)行過(guò)重寫(xiě),那么啟動(dòng)時(shí)aof文件的大小會(huì)被作為基準(zhǔn)值。這個(gè)基準(zhǔn)值會(huì)和當(dāng)前的aof大小進(jìn)行比較。如果當(dāng)前aof大小超出所設(shè)置的增長(zhǎng)比例,則會(huì)觸發(fā)重寫(xiě)。如果設(shè)置auto-aof-rewrite-percentage為0,則會(huì)關(guān)閉此重寫(xiě)功能
auto-aof-rewrite-percentage 100
# 設(shè)置一個(gè)最小大小,是為了防止在aof很小時(shí)就觸發(fā)重寫(xiě)
auto-aof-rewrite-min-size 64mb

4、數(shù)據(jù)安全性

AOF文件會(huì)記錄從上一次重寫(xiě)到現(xiàn)在的所有寫(xiě)操作,redis故障恢復(fù)后會(huì)重新執(zhí)行這些寫(xiě)操作指令,設(shè)置了過(guò)期時(shí)間的key也會(huì)被重新寫(xiě)入并重新設(shè)置過(guò)期時(shí)間,從而恢復(fù)到故障前的數(shù)據(jù)狀態(tài)

5、補(bǔ)充

AOF文件重寫(xiě)可以簡(jiǎn)單的理解為redis會(huì)自動(dòng)的根據(jù)重寫(xiě)機(jī)制配置去定時(shí)的清理那些冗余的、不再必要的命令,僅保留當(dāng)前使用中的數(shù)據(jù)命令,由此可以減少AOF文件的體積,減少磁盤(pán)空間使用率以及提高數(shù)據(jù)恢復(fù)的速度。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis實(shí)現(xiàn)商品秒殺的示例代碼

    Redis實(shí)現(xiàn)商品秒殺的示例代碼

    本文主要介紹了Redis實(shí)現(xiàn)商品秒殺的示例代碼,詳細(xì)介紹了Redis的List、Set和Hash類(lèi)型,以及使用Redis事務(wù)保證原子性的方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-02-02
  • Redis連接失?。嚎蛻舳薎P不在白名單中的問(wèn)題分析與解決方案

    Redis連接失敗:客戶端IP不在白名單中的問(wèn)題分析與解決方案

    在現(xiàn)代分布式系統(tǒng)中,Redis作為一種高性能的內(nèi)存數(shù)據(jù)庫(kù),被廣泛應(yīng)用于緩存、消息隊(duì)列、會(huì)話存儲(chǔ)等場(chǎng)景,然而,在實(shí)際使用過(guò)程中,我們可能會(huì)遇到各種連接問(wèn)題,其中“客戶端IP不在白名單中”是一個(gè)常見(jiàn)的錯(cuò)誤,本文將從錯(cuò)誤分析、原因排查、解決方案等詳細(xì)探討如何解決這一問(wèn)題
    2025-01-01
  • Redis高可用的三種實(shí)現(xiàn)方式

    Redis高可用的三種實(shí)現(xiàn)方式

    在實(shí)際生產(chǎn)環(huán)境中為保證Redis的服務(wù)連續(xù)性和可靠性,需要設(shè)計(jì)一個(gè)高可用架構(gòu),本文就來(lái)介紹一下Redis高可用的三種實(shí)現(xiàn)方式,主要包括主從復(fù)制模式,Redis Sentinel模式和Redis Cluster模式,感興趣的可以了解一下
    2023-12-12
  • redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù)

    redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù)

    本文主要介紹了redis-cli登錄遠(yuǎn)程redis服務(wù)并批量導(dǎo)入數(shù)據(jù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-10-10
  • 為啥Redis使用pipelining會(huì)更快

    為啥Redis使用pipelining會(huì)更快

    這篇文章主要介紹了為啥Redis使用pipelining會(huì)更快,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • Redis緩存異常之緩存雪崩問(wèn)題解讀

    Redis緩存異常之緩存雪崩問(wèn)題解讀

    文章主要介紹了緩存雪崩、擊穿和穿透問(wèn)題,以及針對(duì)這些問(wèn)題的解決方法,包括服務(wù)熔斷、服務(wù)降級(jí)、請(qǐng)求限流和布隆過(guò)濾器等
    2025-01-01
  • 基于Redis的List實(shí)現(xiàn)特價(jià)商品列表功能

    基于Redis的List實(shí)現(xiàn)特價(jià)商品列表功能

    本文通過(guò)場(chǎng)景分析給大家介紹了基于Redis的List實(shí)現(xiàn)特價(jià)商品列表,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-08-08
  • SpringBoot3+Redis實(shí)現(xiàn)分布式鎖的配置方法

    SpringBoot3+Redis實(shí)現(xiàn)分布式鎖的配置方法

    這篇文章主要介紹了SpringBoot3+Redis實(shí)現(xiàn)分布式鎖,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友跟隨小編一起看看吧
    2024-07-07
  • redis使用不當(dāng)導(dǎo)致應(yīng)用卡死bug的過(guò)程解析

    redis使用不當(dāng)導(dǎo)致應(yīng)用卡死bug的過(guò)程解析

    本文主要記一次找因redis使用不當(dāng)導(dǎo)致應(yīng)用卡死bug的過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • Redis實(shí)現(xiàn)鎖續(xù)期的項(xiàng)目實(shí)踐

    Redis實(shí)現(xiàn)鎖續(xù)期的項(xiàng)目實(shí)踐

    本文介紹了使用Redis實(shí)現(xiàn)分布式鎖的續(xù)期,包括使用Lua腳本、Redlock算法和Redisson客戶端等方法,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-12-12

最新評(píng)論