Redisの永続化について
最近、Redisについて調べているのでその結果を自分用にまとめておきます。
Redisの永続化方法については大きく以下2つがある。
- RDB方式
- AOF方式
それぞれのメリットデメリットは以下である。
RDB方式
特定の間隔毎にスナップショットを作成する方式。
メリット
デメリット
- 例えば5分間に100件書込があった場合にアーカイブするといったことを行うため、Redisが停止した場合のデータロスを最小化したい場合は不向き。
- 子プロセスを使って永続化処理を走らせるため、データ量が大きい場合かつ、CPU性能がそれほどではない場合、最悪1秒程度Redisが応答しなくなる場合がある。
AOF方式
サーバーが受け付けたすべての書き込みコマンドを記録する方式。
メリット
- 耐障害性がRDBより優れている、例えば毎秒セーブする設定とした場合、最悪でも1秒のデータロスで済む。
- その他にも、全ての書込をセーブする事もできる。(性能は当然劣化する)
- バックアップファイル等でのデータ破損はほぼない
- ファイルが肥大化してきても自動でリライトしてくれる。
デメリット
どうすればよいのか
- PosgreSQL等の安全性を確保したい場合、AOFとRDBの両方を併用することが推奨されている。
- データ量が多く、数分のデータロスが許容できる場合はRDBのみを使うと良い。
- 一方、AOFのみの使用は推奨しない。