1 回答
TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
redis 數(shù)據(jù)持久化
1、快照(snapshots)
缺省情況情況下,Redis把數(shù)據(jù)快照存放在磁盤上的二進(jìn)制文件中,文件名為dump.rdb。你可以配置Redis的持久化策略,例如數(shù)據(jù)集中每N秒鐘有超過(guò)M次更新,就將數(shù)據(jù)寫入磁盤;或者你可以手工調(diào)用命令SAVE或BGSAVE。
?
數(shù)據(jù)保存的目錄:
?
工作原理
Redis forks.
子進(jìn)程開始將數(shù)據(jù)寫到臨時(shí)RDB文件中。
當(dāng)子進(jìn)程完成寫RDB文件,用新文件替換老文件。
這種方式可以使Redis使用copy-on-write技術(shù)。
2、APPEND ONLY MODE(AOF)
快照模式并不十分健壯,當(dāng)系統(tǒng)停止,或者無(wú)意中Redis被kill掉,最后寫入Redis的數(shù)據(jù)就會(huì)丟失。這對(duì)某些應(yīng)用也許不是大問(wèn)題,但對(duì)于要求高可靠性的應(yīng)用來(lái)說(shuō),Redis就不是一個(gè)合適的選擇。
Append-only文件模式是另一種選擇。
你可以在配置文件中打開AOF模式:
?
選項(xiàng):
1、appendfsync no
當(dāng)設(shè)置appendfsync為no的時(shí)候,Redis不會(huì)主動(dòng)調(diào)用fsync去將AOF日志內(nèi)容同步到磁盤,所以這一切就完全依賴于操作系統(tǒng)的調(diào)試了。對(duì)大多數(shù)Linux操作系統(tǒng),是每30秒進(jìn)行一次fsync,將緩沖區(qū)中的數(shù)據(jù)寫到磁盤上。
2、appendfsync everysec
當(dāng)設(shè)置appendfsync為everysec的時(shí)候,Redis會(huì)默認(rèn)每隔一秒進(jìn)行一次fsync調(diào)用,將緩沖區(qū)中的數(shù)據(jù)寫到磁盤。但是當(dāng)這一 次的fsync調(diào)用時(shí)長(zhǎng)超過(guò)1秒時(shí)。Redis會(huì)采取延遲fsync的策略,再等一秒鐘。也就是在兩秒后再進(jìn)行fsync,這一次的fsync就不管會(huì)執(zhí)行多長(zhǎng)時(shí)間都會(huì)進(jìn)行。這時(shí)候由于在fsync時(shí)文件描述符會(huì)被阻塞,所以當(dāng)前的寫操作就會(huì)阻塞。
- 1 回答
- 0 關(guān)注
- 703 瀏覽
添加回答
舉報(bào)
