Redis持久化

1,RDB持久化(默認(rèn))

RDB:快照形式,存儲數(shù)據(jù)結(jié)果
1)redis是內(nèi)存數(shù)據(jù)庫,數(shù)據(jù)庫的狀態(tài)(非空數(shù)據(jù)庫和K-V)在內(nèi)存中,如果不持久化到磁盤則進(jìn)程一旦退出,丟失了數(shù)據(jù)庫的狀態(tài)。
2)redis中有兩個命令能生成RDB文件(二進(jìn)制)。save命令會阻塞redis進(jìn)程;bgsave會使用子進(jìn)程處理,不會阻塞。
3)DB loaded from disk redis啟動,檢測到有RDB文件,則會自動載入(未開啟AOF時)。
4)redis配置文件中save選項,自動觸發(fā)bgsave將數(shù)據(jù)持久化到磁盤上。
save 900 1 滿足900s有一次修改
save 300 10 滿足300s有10次修改
save 60 10000 滿足60s有10000次修改
如果只是使用redis緩存,而不需要持久化??梢宰⑨尩魋ave或者使用save ""

2,AOF持久化

AOF:日志形式,存儲操作過程
1)Append only file。通過保存redis進(jìn)程的寫命令記錄數(shù)據(jù)庫的狀態(tài)。
2)append 將寫命令追加到aof_buff緩沖區(qū)
文件寫入 與同步 將aop緩沖區(qū)內(nèi)容寫入到AOF文件中
3)appendonly yes 開啟AOF持久化
appendfilename "appendonly.aof" 指定持久化文件
appendfsync everysec 持久化策略,每秒
4)AOF文件會越來越大,提供AOF重寫,通過讀取數(shù)據(jù)庫中的K-V來實現(xiàn)的。
5)appendfsync的值決定aof的效率和安全性。
always:每次時間循環(huán)都將aof_buf中內(nèi)容寫入并同步到aof文件。(最多只會丟失一個時間循環(huán)。)
everysec:每個事件循環(huán),都將緩沖區(qū)內(nèi)容寫入aof文件,每秒進(jìn)行aof文件同步。(最多丟失1s的數(shù)據(jù))
no:每個事件循環(huán)都將aof_buf中內(nèi)容寫入aof文件,何時同步由os決定。
6)寫入和同步:os先將數(shù)據(jù)寫入到一個內(nèi)存緩沖區(qū),當(dāng)滿了或者時間到了,才同步到磁盤。

3,RDB和AOF對比

1)RDB可能會造成部分?jǐn)?shù)據(jù)的丟失。但是數(shù)據(jù)體積小。
2)AOF能記錄所有寫操作,不會丟失數(shù)據(jù)。數(shù)據(jù)體積大。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容