redis持久化方式

現在有 項目用到redis的做內存,同時也需要做持久化備份,看了一下redis自身的持久化

redis自身支持兩種持久化方式RDB和AOF

1、RDB是定時對數據庫內存做快照的方式備份整個內存數據庫,這種方式,在redis或者服務器故障的時候有可能會丟失大量數據,但是這種方式是主進程fork一個子進程來執行,不影響到主進程的效率,也不會阻塞,同時保存數據集的完整性,如果對數據丟失能容忍一個小時左右的數據,可以採用這種方式,性能高。

2、AOF是將redis所有寫的操作作爲日誌存在AOF文件中,採用追加的方式,通常可以設置no:不做aof追加,always,每次寫操作都做一次追加aof文件,everysec:每秒鐘嘴一個追加,其中always不會丟失任何數據,但是會耗很多性能,其中everysec是推薦使用的,其速度也和rdb相差無幾

3、如果對數據完整性和性能都有要求的情況下,可以同時設置RDB和AOF方式。

在恢復數據的時候,不知道redis是  怎麼選擇優先加載dump.rpd和appendonly.aof兩個文件中的哪個?於是我做了一下測試:

aof 有數據, dump不存在, rdb開  aof關  不加載數據
aof 有數據, dump不存在, rdb關  aof關  不加載數據
aof 有數據, dump不存在, rdb關  aof開  加載數據
aof 有數據, dump不存在, rdb開  aof開  加載數據

aof 不存在, dump有數據, rdb開  aof關  加載數據
aof 不存在, dump有數據, rdb關  aof關  加載數據
aof 不存在, dump有數據, rdb關  aof開  不加載數據
aof 不存在, dump有數據, rdb開  aof開  不加載數據-執行shutdown命令之後dump文件中的數據清空

通過上面發現,在RDB和AOF同時都不設置的情況下,如果dump.rdb存在,會加載dump.rdb的數據

如果RDB和AOF同時設置的情況下,會優先加載appendonly.aof的數據
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章