Redis持久化RDB和AOF區(qū)別詳解
RDB是Redis內(nèi)存到硬盤的快照,用于redis持久化,創(chuàng)建RDB二進(jìn)制文件,將存儲(chǔ)在內(nèi)存中的數(shù)據(jù),持久化的放到硬盤中,當(dāng)我們需要這些數(shù)據(jù)的時(shí)候,啟動(dòng)載入RDB文件,數(shù)據(jù)將會(huì)被存入內(nèi)存中,其實(shí)RDB就是一種快照的方式持久化存儲(chǔ)數(shù)據(jù),也可以作為一種復(fù)制媒介,這個(gè)我們后面在談。
RDB
觸發(fā)機(jī)制--主要三種方式
- save 同步命令(會(huì)阻塞redis)
- bgsave 異步命令(fork)
- 自動(dòng)
Save同步命令
save
文件策略:生成一個(gè)臨時(shí)文件,如果存在老的文件,將會(huì)替換舊文件
bgsave 異步命令
主進(jìn)程通過(guò)fork()函數(shù),創(chuàng)建子進(jìn)程生成DRB文件,在此期間訪問(wèn)redis仍然能正常響應(yīng)
命令 | save | bgsave |
IO | 同步 | 異步 |
阻塞 | 阻塞 | 阻塞(操作不當(dāng)fork阻塞) |
優(yōu)點(diǎn) | 不額外占用內(nèi)存 | 不阻塞客戶端命令 |
缺點(diǎn) | 阻塞客戶端命令 | 需要fork,額外消耗內(nèi)存 |
redis自動(dòng)生成RDB文件(不可控)
save 900 1 #900秒 改了一次就自動(dòng)生成RDB文件
save 300 10 #300秒修改了10次就自動(dòng)生成RDB文件
redis save配置推薦
#關(guān)閉自動(dòng)保存配置#save 900 1 #900秒 改了一次就自動(dòng)生成RDB文件#save 300 10 #300秒修改了10次就自動(dòng)生成RDB文件 dbfilename dump-${port}.rdb #rdb文件名 dir /bigdiskpath #分盤,rdb文件保存位置 stop-writes-on-bgsave-error yes #bdsave出錯(cuò),停止寫入 rdbcompression yes #采用壓縮位置 rdbchecksum yes #開啟校驗(yàn)和
不容忽視的觸發(fā)機(jī)制
有時(shí)候我們沒有執(zhí)行save bgsave命令,也沒有開啟自動(dòng)保存命令,還是會(huì)生成RDB,可能是因?yàn)橐韵略颍?/p>
- 全量復(fù)制
- debug reload
- shutdown
AOF
RDB存在的問(wèn)題:耗時(shí)耗性能,阻塞丟失數(shù)據(jù)
AOF運(yùn)行原理:每執(zhí)行一條命令,就在AOF中增加一條記錄。當(dāng)需要恢復(fù)時(shí),直接執(zhí)行AOF寫入redis
AOF三種策略
- always(每條命令都把緩沖區(qū)fsync到硬盤)
- everysec(每秒刷新一次,每秒吧緩沖區(qū)fsync到硬盤)
- no(跟隨操作系統(tǒng),有操作系統(tǒng)決定,不可控)
命令 | always | everysec | no |
優(yōu)點(diǎn) | 不丟失數(shù)據(jù) | 每秒一次 | 不用管 |
缺點(diǎn) | IO開銷大 | 丟失一秒數(shù)據(jù) | 不可控 |
AOF重寫
將過(guò)期的,重復(fù)的,做一些優(yōu)化合并
作用:減少磁盤空間占用,加快文件恢復(fù)速度
AOF重寫兩種方式:
bgrewriteaof
aof重寫配置
AOF重寫配置
auto-aof-rewrite-min-size #AOF重寫需要的最小尺寸
auto-aof-rewrite-percentage #AOF文件增長(zhǎng)率
aof_current_size #統(tǒng)計(jì)當(dāng)前aof文件大小
aof_base_size #aof上次啟動(dòng)和重寫的尺寸
AOF配置
RDB和AOF的比較
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
windows下通過(guò)批處理腳本啟動(dòng)redis的操作
本文主要給大家介紹了windows下通過(guò)批處理腳本啟動(dòng)redis的操作,windows下redis啟動(dòng),需要進(jìn)入redis安裝目錄,然后shift+右鍵,選擇“在此處打開命令窗口”,然后輸入redis-server.exe redis.conf,就可以啟動(dòng)redis了,文中有詳細(xì)的圖文參考,感興趣的朋友可以參考下2023-12-12詳解Spring?Boot?訪問(wèn)Redis的三種方式
這篇文章主要介紹了Spring?Boot?訪問(wèn)Redis的三種方式,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-12-12銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法
這篇文章主要介紹了銀河麒麟V10sp1服務(wù)器系統(tǒng)安裝redis不能使用的快速解決辦法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01Redis 中的熱點(diǎn)鍵和數(shù)據(jù)傾斜示例詳解
熱點(diǎn)鍵是指在 Redis 中被頻繁訪問(wèn)的特定鍵,這些鍵由于其高訪問(wèn)頻率,可能導(dǎo)致 Redis 服務(wù)器的性能問(wèn)題,尤其是在高并發(fā)場(chǎng)景下,本文給大家介紹Redis 中的熱點(diǎn)鍵和數(shù)據(jù)傾斜,感興趣的朋友一起看看吧2025-03-03關(guān)于Redis數(shù)據(jù)庫(kù)三種持久化方案介紹
大家好,本篇文章主要講的是關(guān)于Redis數(shù)據(jù)庫(kù)三種持久化方案介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-01-01Redis高并發(fā)緩存問(wèn)題分析及解決過(guò)程
文章總結(jié)了Redis緩存的六種常見問(wèn)題及其解決方案:緩存穿透、緩存擊穿、緩存雪崩、熱點(diǎn)key重建優(yōu)化、緩存和數(shù)據(jù)庫(kù)雙寫不一致,以及Redis對(duì)過(guò)期key的三種清除策略,每種問(wèn)題都提供了詳細(xì)的原因分析和具體的解決方案2025-01-01RedisTemplate常用操作方法總結(jié)(set、hash、list、string等)
本文主要介紹了RedisTemplate常用操作方法總結(jié),主要包括了6種常用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05redis緩存與數(shù)據(jù)庫(kù)一致性的問(wèn)題及解決
這篇文章主要介紹了redis緩存與數(shù)據(jù)庫(kù)一致性的問(wèn)題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-06-06