redis持久化的介紹
1. RDB
1.1 RDB簡介
RDB:在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤,也就是行話講的Snapshot快照,它恢復(fù)時(shí)是將快照文件直接讀到內(nèi)存里。
工作機(jī)制:每隔一段時(shí)間,就把內(nèi)存中的數(shù)據(jù)保存到硬盤上的指定文件中。
RDB是默認(rèn)開啟的!
Redis會(huì)單獨(dú)創(chuàng)建(fork)一個(gè)子進(jìn)程來進(jìn)行持久化,會(huì)先將數(shù)據(jù)寫入到一個(gè)臨時(shí)文件中,待持久化過程都結(jié)束了,再用這個(gè)臨時(shí)文件替換上次持久化好的文件。整個(gè)過程中,主進(jìn)程是不進(jìn)行任何IO操作的,這就確保了極高的性能如果需要進(jìn)行大規(guī)模數(shù)據(jù)的恢復(fù),且對(duì)于數(shù)據(jù)恢復(fù)的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。
RDB的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失。
1.2 RDB保存策略
save 900 1 900 秒內(nèi)如果至少有 1 個(gè) key 的值變化,則保存
save 300 10 300 秒內(nèi)如果至少有 10 個(gè) key 的值變化,則保存
save 60 10000 60 秒內(nèi)如果至少有 10000 個(gè) key 的值變化,則保存
save “” 就是禁用RDB模式;
1.3 RDB常用屬性配置
1.4 RDB數(shù)據(jù)丟失的情況
兩次保存的時(shí)間間隔內(nèi),服務(wù)器宕機(jī),或者發(fā)生斷電問題。
1.5 RDB的觸發(fā)
①基于自動(dòng)保存的策略
②執(zhí)行save,或者bgsave命令!執(zhí)行時(shí),是阻塞狀態(tài)。
③執(zhí)行flushdb命令,也會(huì)產(chǎn)生dump.rdb,但里面是空的,沒有意義。
④當(dāng)執(zhí)行shutdown命令時(shí),也會(huì)主動(dòng)地備份數(shù)據(jù)
2. AOF
2.1 AOF簡介
- AOF是以日志的形式來記錄每個(gè)寫操作,將每一次對(duì)數(shù)據(jù)進(jìn)行修改,都把新建、修改數(shù)據(jù)的命令保存到指定文件中。Redis重新啟動(dòng)時(shí)讀取這個(gè)文件,重新執(zhí)行新建、修改數(shù)據(jù)的命令恢復(fù)數(shù)據(jù)。
- 默認(rèn)不開啟,需要手動(dòng)開啟
- AOF文件的保存路徑,同RDB的路徑一致。
- AOF在保存命令的時(shí)候,只會(huì)保存對(duì)數(shù)據(jù)有修改的命令,也就是寫操作!
- 當(dāng)RDB和AOF存的不一致的情況下,按照AOF來恢復(fù)。因?yàn)锳OF是對(duì)RDB的補(bǔ)充。備份周期更短,也就更可靠。
2.2 AOF保存策略
appendfsync always:每次產(chǎn)生一條新的修改數(shù)據(jù)的命令都執(zhí)行保存操作;效率低,但是安全!
appendfsync everysec:每秒執(zhí)行一次保存操作。如果在未保存當(dāng)前秒內(nèi)操作時(shí)發(fā)生了斷電,仍然會(huì)導(dǎo)致一部分?jǐn)?shù)據(jù)丟失(即1秒鐘的數(shù)據(jù))。
appendfsync no:從不保存,將數(shù)據(jù)交給操作系統(tǒng)來處理。更快,也更不安全的選擇。
推薦(并且也是默認(rèn))的措施為每秒 fsync 一次, 這種 fsync 策略可以兼顧速度和安全性。
2.3 AOF常用屬性
2.4 AOF文件的修復(fù)
如果AOF文件中出現(xiàn)了殘余命令,會(huì)導(dǎo)致服務(wù)器無法重啟。此時(shí)需要借助redis-check-aof工具來修復(fù)!
命令:redis-check-aof --fix
文件
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
php結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購、秒殺功能的實(shí)例
下面小編就為大家?guī)硪黄猵hp結(jié)合redis實(shí)現(xiàn)高并發(fā)下的搶購、秒殺功能的實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12深入理解Redis7哨兵模式(保姆級(jí)教學(xué))
Redis的主從復(fù)制存在一定的缺陷,為了解決這一問題,Redis官方推薦一種高可用方案哨兵模式,本文主要介紹了深入理解Redis7哨兵模式,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01redis發(fā)布和訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了redis發(fā)布和訂閱的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-08-08Redis實(shí)現(xiàn)分布式Session管理的機(jī)制詳解
這篇文章主要介紹了Redis實(shí)現(xiàn)分布式Session管理的機(jī)制詳解,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-01-01