Redis持久化【RDB和AOF】

一、RDB

*.rdb 文件就是redis 的持久化文件


原理是redis會單獨創建(fork)一個與當前線程一模一樣的子進程來進行持久化,這個子線程的所有數據(變量。環境變量,程序程序計數器等)都和原進程一模一樣,會先將數據寫入到一個臨時文件中,待持久化結束了,再用這個臨時文件替換上次持久化好的文件,整個過程中,主進程不進行任何的io操作,這就確保了極高的性能

觸發機制

 shutdown時,如果沒有開啓aof,會觸發
 配置文件中默認的快照配置
 執行命令save或者bgsave  save是隻管保存,其他不管,全部阻塞   bgsave: redis會在後臺異步進行快照操作,同時可以響應客戶端的請求
 執行flushall命令  但是裏面是空的,無意義

二、AOF

保存操作日誌文件,不包括查操作

 

aof重寫機制

當AOF文件增長到一定大小的時候Redis能夠調用 bgrewriteaof對日誌文件進行重寫 。當AOF文件大小的增長率大於該配置項時自動開啓重寫(這裏指超過原大小的100%)。
auto-aof-rewrite-percentage 100

當AOF文件增長到一定大小的時候Redis能夠調用 bgrewriteaof對日誌文件進行重寫 。當AOF文件大小大於該配置項時自動開啓重寫

三、RDB和AOF

1.redis提供了rdb持久化方案,爲什麼還要aof?

優化數據丟失問題,rdb會丟失最後一次快照後的數據,aof丟失不會超過2秒的數據

2.如果aof和rdb同時存在,聽誰的?

aof

3.rdb和aof優勢劣勢

rdb 適合大規模的數據恢復,對數據完整性和一致性不高 ,  在一定間隔時間做一次備份,如果redis意外down機的話,就會丟失最後一次快照後的所有操作
aof 根據配置項而定

1.官方建議   兩種持久化機制同時開啓,如果兩個同時開啓  優先使用aof持久化機制 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章