ホームページ >データベース >Redis >Redisのrdbとaofの違いは何ですか?

Redisのrdbとaofの違いは何ですか?

青灯夜游
青灯夜游オリジナル
2019-06-17 14:14:5310387ブラウズ

aof、rdb は 2 つの Redis 永続化メカニズムです。クラッシュ後の Redis の回復に使用されます。それでは、それらの違いは何でしょうか?以下の記事で紹介していますので、ご参考になれば幸いです。

Redisのrdbとaofの違いは何ですか?

#永続的 RDB と AOF の違い

RDB 永続性とは、指定された時間間隔を指します。メモリ内のデータ セットの一部がディスクに書き込まれます。実際の操作プロセスは、サブプロセスをフォークし、最初にデータ セットを一時ファイルに書き込みます。書き込みが成功した後、前のファイルはバイナリを使用して置き換えられ、保存されます。圧縮。

RDB は、キー空間内のすべてのキーと値のペア (期限切れの辞書のデータを含む) を永続的に保存し、バイナリ形式で保存します。これは RDB ファイル仕様に準拠しており、データ型の違いに応じて異なる方法で処理されます。

AOF 永続性は、サーバーによって処理されたすべての書き込みおよび削除操作をログ形式で記録します。クエリ操作は記録されませんが、テキストで記録されます。ファイルを開いて詳細な操作記録を確認できます。

AOF は、データベースのステータスを記録するために、redis サーバーによって実行されたすべての書き込みコマンドを永続的に保存します。コマンドは書き込み前に aof_buf バッファーに保存されます。

永続的 RDB と AOF の長所と短所:

RDB の利点は何ですか?

1). この方法を採用すると、Redis データベース全体にファイルが 1 つだけ含まれるようになり、ファイルのバックアップに最適です。たとえば、過去 24 時間のデータを 1 時間ごとにアーカイブし、過去 30 日間のデータを毎日アーカイブすることも計画できます。このようなバックアップ戦略により、システムに致命的な障害が発生した場合でも、非常に簡単に復元できます。

2)、RDB は災害復旧に非常に優れた選択肢です。なぜなら、単一のファイルを簡単に圧縮して、他の記憶メディアに転送できるからです。

3)、パフォーマンスを最大化します。 Redis サービス プロセスの場合、永続化を開始するときに必要なのは、子プロセスをフォークアウトすることだけであり、その後、子プロセスが永続化作業を完了するため、サービス プロセスによる IO 操作の実行を大幅に回避できます。

4). AOF機構と比較して、データセットが大きい場合にはRDBの起動効率が高くなります。

RDB の欠点は何ですか?

1). データの高可用性を確保したい場合、つまりデータ損失を最大限に回避したい場合、RDB は良い選択ではありません。スケジュールされた永続化の前にシステムがクラッシュすると、ディスクに書き込まれる時間がなかったデータが失われるためです。

2).RDB はフォーク子プロセスを通じてデータの永続化を支援するため、データ セットが大きい場合、サーバー全体が数百ミリ秒、場合によっては 1 秒間サービスを停止する可能性があります。

AOF の利点は何ですか?

1). このメカニズムにより、より高いデータ セキュリティ、つまりデータの永続性が実現します。 Redis は 3 つの同期戦略、つまり 1 秒ごとの同期、変更ごとの同期、および同期なしを提供します。実際、1 秒ごとの同期も非同期で完了し、その効率も非常に高いのですが、唯一の違いは、システムがダウンすると、この 1 秒以内に変更されたデータは失われることです。変更が同期されるたびに、それを同期永続性と考えることができます。つまり、発生したすべてのデータ変更はすぐにディスクに記録されます。予想通り、このアプローチは最も効率的ではありません。同期がないことについては、これ以上言う必要はなく、誰もが正しく理解できると思います。

2) このメカニズムはログ ファイルの書き込みに追加モードを使用するため、書き込みプロセス中にダウンタイムが発生した場合でも、ログ ファイル内の既存の内容は破壊されません。ただし、この操作でデータの半分しか書き込めず、システム クラッシュが発生しても心配しないでください。次回 Redis を開始する前に、redis-check-aof ツールを使用してデータの整合性の問題を解決できます。

3). ログが大きすぎる場合、Redis は書き換えメカニズムを自動的に有効にすることができます。つまり、Redis は変更されたデータを追加モードで古いディスク ファイルに継続的に書き込み、同時に、この期間中に実行された変更コマンドを記録する新しいファイルも作成します。したがって、書き換えスイッチングを行う際のデータの安全性をより確保することができる。

4)、AOF には、すべての変更操作を記録するための明確でわかりやすい形式のログ ファイルが含まれています。実際、このファイルを通じてデータの再構築を完了することもできます。

AOF の欠点は何ですか?

1). 同じ数のデータ セットの場合、通常、AOF ファイルは RDB ファイルよりも大きくなります。大規模なデータ セットを復元する場合、RDB は AOF よりも高速です。

2). 同期戦略によっては、動作効率の点で AOF は RDB よりも遅くなることがよくあります。つまり、同期戦略の 1 秒あたりの効率は比較的高く、同期無効化戦略の効率は RDB と同等です。

この 2 つのどちらかを選択する基準は、キャッシュ整合性 (aof) を高める代わりにシステムがある程度のパフォーマンスを犠牲にするかどうか、または書き込み操作が実行されているときにパフォーマンスを高める代わりにバックアップを有効にしない意思があるかどうかを確認することです。頻繁に、手動操作を待ちます。 保存する場合は、バックアップ (rdb) を作成してください。 RDB には、より結果的に一貫した意味があります。ただし、実稼働環境は実際にはこの 2 つを組み合わせたものです。

以上がRedisのrdbとaofの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。