redis持久化分為兩種RDB(redis DB)和AOF(appendonlyfile)
一、RDB
在默認的情況下redis將數(shù)據(jù)以快照保存到dump.rdb的二進制文件中,里面存的是數(shù)據(jù)。 發(fā)生故障時,數(shù)據(jù)容易丟失。
方式:產(chǎn)生一個rdb
- 阻塞方式:有寫操作時,redis不能提供服務(wù)。一般不用
- 非阻塞方式:bgsave 子進程去寫數(shù)據(jù)
默認配置策略:
秒 寫的操作次數(shù)
save 60 10000
save 300 10
save 900 1
二、AOF
不能保證數(shù)據(jù)不丟失,文件里面存的是命令數(shù)據(jù),默認是關(guān)閉的
要開啟aof改配置文件
appendonly yes
配置策略:
appendfsync的選項
- always:服務(wù)器每寫一個命令就調(diào)用一次fdatasync,將緩沖區(qū)buffer的命令數(shù)據(jù),寫入到硬盤。發(fā)生故障最多丟一條命令,安全可靠,效率低。
- everysec: (默認) 服務(wù)器每一秒鐘,寫入一次,最多丟失一秒數(shù)據(jù)
-
no: 服務(wù)器不主動調(diào)用fdatasynce,由操作系統(tǒng)決定何時將緩沖區(qū)中的命令數(shù)據(jù)寫入硬盤。最多丟失一個緩沖區(qū)的數(shù)據(jù),不可靠。
機器重啟后redis會重寫aof命令數(shù)據(jù),重寫就是減小aof文件的大小。
兩種方式都開啟的話,重啟后只恢復(fù)aof文件命令。