Redis の内部を探ってみる (aof)

Redis の内部を探ってみる (save) の続き、今回は appendonlyfile について見てみよう。
と思ってたらRedis Persistence (redis.io) に全部書いてあるじゃない…

更新系コマンドについて、レスポンスを返す前にずっとログファイルに追記して、最起動時にはそれを順番にリプレイするんですね。
save はある瞬間の dump でしかないので、電源障害などの時に最後の save 以降のデータを失うが appendonlyfile を有効にすることで回避できる、その分レスポンスタイムは悪くなる。
ファイルへの書き込みの sync タイミングを

  • 常に sync
  • 1秒おきに sync (default)
  • 明示的な sync を行わない

から選べる。(上側がより遅い)
同じキーの更新を続けると無駄にファイルが肥大化する(counterのincrementとか)ので save と同様の仕組みで fork してその時点の dump からの追記へと作りなおすことができる。この処理中の変更はメモリに溜めておいて処理後に追加するが、処理中も古いファイルへ書き込みを続けているので安全。

ちなみに shutdown 時には sync される、aof が無効で save が有効な場合は shutdown 時に save されるので、正常は Redis の再起動ではデータは失われない。

ドットインストールに Redisの基礎 (全14回) ができてみたいです。

『Redisの基礎 (全14回)』をドットインストールに追加しました #dotinstall

コメント