我最近一直在閱讀redis源代碼,我發現在flushAppendOnlyFile()中,編寫者使用fdatasync將數據更新到磁盤。我們知道,fdatasync()不會寫入元數據信息,而flushAppendOnlyFile()會更改aof文件的大小。所以如果在系統更新元數據之前發生崩潰,最新的aof數據會丟失嗎? 筆者在http://oldblog.antirez.com/post/fsync-different-thread-useless.html下面寫道如果在aof中使用fdatasync()時發生崩潰,數據將會發生什麼?
我能避免synching元數據沒有問題,但如果我理解這個正確的,在一個只添加的文件方面,是否未同步大小似乎等同於泄漏數據,如果發生崩潰我猜...所以這在我的情況下是不可能的。
我不明白爲什麼它不可能在redis上下文中。 任何人都可以幫助我嗎?
謝謝!我對fdatasync有一個錯誤的理解。 – petersunbag