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

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

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

redis兩種持久化方式RDB和AOF

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

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

RDB持久化

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

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

1、開啟/禁用方式

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

2、觸發(fā)機制

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

3、參數(shù)配置

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

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

#rdb快照是否進行壓縮,但是會消耗cpu
rdbcompression yes

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

# rdb快照文件名
dbfilename dump.rdb

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

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

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

AOF持久化

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

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

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

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

1、開啟/禁用方式

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

2、觸發(fā)機制

每次寫操作都會追加到 AOF 文件中。

3、參數(shù)配置

#開啟aof持久化策略,將接收到的每次寫操作請求都追加到aof文件中,在redis重啟時,會加載aof文件,優(yōu)先級比rdb高
appendonly no

# aof文件名
appendfilename "appendonly.aof"

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

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

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

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

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

5、補充

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

總結(jié)

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

相關(guān)文章

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

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

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

    Redis連接失?。嚎蛻舳薎P不在白名單中的問題分析與解決方案

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

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

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

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

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

    為啥Redis使用pipelining會更快

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

    Redis緩存異常之緩存雪崩問題解讀

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

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

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

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

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

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

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

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

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

最新評論