rdb
和aof
一、RDB是什麼?面試
Snapshot
快照,它恢復時是將快照文件直接讀到內存裏dump.rdb
文件中,5分鐘後,第二次存儲20到條dump.rdb
文件中,就把第一次的覆蓋了。二、Forkredis
Fork
的做用:複製一個與當前進程同樣的進程。新進程的全部數據(變量、環境變量、程序計數器等) 數值都和原進程一致,可是是一個全新的進程,並做爲原進程的子進程。算法
三、RDB 保存的是 dump.rdb
文件。數據庫
四、配置位置:redis.conf
的 SNAPSHOTTING
bash
五、配置詳解:服務器
在磁盤上保存數據的命令:save <seconds> <changes>
併發
如下狀況3選1,將會觸發數據庫保存:app
手動當即保存:異步
set key value
-> save
不保存:高併發
注意:
ShutDown
,至關於MySQL的commit
,會當即生成dump.rdb
文件。此時,若是以前執行FLUSHALL
,把數據庫清空,此時既清空又提交,生成的dump.rdb
是空的文件。因此,恢復的文件也是空的。恢復:
dump.rdb
便可。stop-writes-on-bgsave-error
:後臺save出錯,那麼就中止寫入,出錯就剎車。
rdbcompression
:是否啓用壓縮算法,默認開啓。
rdbchecksum
:用於數據校驗。
六、如何觸發RDB快照(3種方式)
save
或者bgsave
。Save
:save時只管保存,其它無論,所有阻塞。BGSAVE
:Redis會在後臺異步進行快照操做,快照同時還能夠響應客戶端請求。能夠經過:lastsave
,獲取最後一次成功執行快照的時間flushall
命令,也會產生dump.rdb
文件,但裏面是空的,無心義七、RDB
優點和劣勢:
八、如何中止:
redis-cli config set save ""
一、AOF是什麼?
二、AOF 保存的是 appendonly.aof
文件
三、配置的位置:redis.conf
的 APPEND ONLY MODE
四、配置詳解:
appendfsync
:同步寫的策略,有三種
always
:同步持久化,每次發生數據變動會被當即記錄到磁盤,性能較差,但數據完整性比較好everysec
:出廠默認推薦,異步操做,每秒記錄,若是一秒內宕機,有數據丟失no
:從不一樣步默認AOF
文件名:appendonly.aof
一、啓動 AOF
AOF
持久化存儲方式默認關閉,設置yes就是啓動持久化
二、修復 AOF
若是我在上面文件的後面,模擬文件損壞的場景,可否成功啓動redis?同時存在rdb 和aof ,二者可否共存,能的話優先加載誰?
模擬:
啓動:
第一問:啓動失敗;
第二問:能夠共存;
第三問:優先加載 aof 文件,由於 rdb 文件是正常的,aof 文件是損壞的,加載失敗的緣由是 aof 文件損壞,因此得出:優先加載 aof 文件
三、如何修復 aof 文件?
輸入命令:redis-check-aof --fix appendonly.aof
一、是什麼?
bgrewriteaof
。二、重寫原理:
三、觸發條件:
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
複製代碼
AOF
優點和劣勢:RDB
or AOF
一、什麼是持久化?
rdb
和aof
二、若是dump.rdb
和appendonly.aof
能夠共存,同時存在的狀況下,會先加載誰?
appendonly.aof