ホームページ  >  記事  >  データベース  >  Redis の 2 つの永続化メソッド。なぜ 2 つの永続化メソッドが必要なのでしょうか?

Redis の 2 つの永続化メソッド。なぜ 2 つの永続化メソッドが必要なのでしょうか?

青灯夜游
青灯夜游転載
2021-10-25 10:35:211279ブラウズ

Redis には 2 種類の永続性 (AOF と RDB) があります . この記事では、これら 2 種類の永続性を理解し、それぞれの長所と短所を見て、Redis に 2 種類の永続性が必要な理由を紹介します。粘り強さ、それが皆さんのお役に立てば幸いです。

Redis の 2 つの永続化メソッド。なぜ 2 つの永続化メソッドが必要なのでしょうか?

Redis の 2 つの永続化メソッド

ご存知のとおり、Redis には AOF と RDB という 2 つの永続化メソッドが用意されています。簡単に振り返ってみましょう。

RDB 永続化

  • RDB 永続化、 は、現時点でのデータベースの状態をディスク に保存することです。 スナップショット永続性とも呼ばれます。
  • RDB は、サーバー構成に応じて手動でトリガーすることも、定期的に実行することもできます。
  • RDB によって生成されるファイルは 圧縮バイナリ ファイル であり、これによってデータベースを その時点の状態 に復元できます。
  • Redis は、フォアグラウンド RDB 永続化コマンド SAVE とバックグラウンド RDB 永続化コマンド BGSAVE を提供します。フォアグラウンドで実行すると、他の Redis コマンドがブロックされ、実行すると、他の Redis コマンドがブロックされます。 Redis はバックグラウンドでクライアントのコマンド要求の処理を続行することもできます。
  • RDB バイナリ ファイルでは、検証付きの圧縮カスタム エンコードを使用して、キーと値のペアのデータが保存されます。 od コマンドを使用して読み取り可能な形式に変換できます。
  • マスター/スレーブ レプリケーション中、初期化されたフル レプリケーションでは RDB ファイルが使用されます。

[関連する推奨事項: Redis ビデオ チュートリアル ]

AOF 永続性

  • AOF 永続性、完全名は Appen Only File で、データの代わりに書き込みコマンドが保存される追加永続化メソッドを意味します。
  • AOF 永続化プロセスは、コマンドの追加、ファイルの書き込み、ファイルの同期の 3 つのステップに分かれています。
  • コマンドの追加: Redis サーバーは書き込みコマンドを実行するたびに、AOF プロトコル形式のサーバー ステータスの aof_buf バッファーの末尾に書き込みコマンドを追加します。
  • ファイルの書き込み: Redis では、各イベント ループが終了する前に、flushAppendOnlyFile 関数が呼び出され、aof_buf バッファーの内容が AOF ファイルに書き込まれます。
  • ファイル同期: 同期syncは、ファイルがオペレーティング システムのバッファに書き込まれるときにディスクに直接同期されるかどうかを示します。構成を通じて、即時同期、1 秒ごとの同期、およびアクティブな同期なし (オペレーティング システムによって制御される) の 3 つの同期方法を選択できます。ファイル I/O バッファリングについて: https://www.litreily.top/2018/10/25/io-cache/
  • Redis は、AOF ファイルの使用を優先してデータを回復します。
  • AOF ファイルはコマンドを格納し、圧縮されていないため、RDB ファイルよりもサイズが大きくなります。
  • AOF ファイルは、BGREWRITEAOF を使用して定期的に書き換えることができ、重複したコマンド、期限切れのコマンド、マージされたコマンドなどを減らすことができます。
  • AOF ファイルは、fork サブプロセスの形式で実装されるバックグラウンドの書き換えをサポートしています。子プロセスにはサーバー プロセスのデータのコピーがあり、ロックを使用せずにデータのセキュリティが確保されます。さらに、AOF を使用してバッファを書き換え、データの不整合を解決します。

2 種類の永続性の長所と短所

RDB の利点

  • ファイル サイズが小さく、コールド バックアップのコピーに適しています

  • AOF と比較して、バックアップと復元の速度が高速です

RDB の欠点

  • 大量のデータが失われる

  • 子プロセスをフォークして BGSAVE## を実行する# 一定量のメモリ リソースを消費します

AOF の利点

  • データ損失の軽減

  • 追加された書き込みバッファ、アドレス指定不要、高速

  • 追加のみ、ディスク アドレス指定不要、高効率

AOF のデメリット

  • ファイルサイズが大きい

  • AOF には

    aof_buf を記述する必要があります 毎回、AOF を開く 永続化後、QPS はわずかに減少します

なぜ Redis には 2 種類の永続性が必要なのでしょうか?

上記のレビューを終えると、RDB と AOF の永続性の間には明らかな違いがあることがわかります。

  • 保存されたコンテンツ: RDB は特定の時点のデータを保存し、AOF は実行された書き込みコマンドを保存します。

  • ファイル サイズ: RDB ファイルは小さく、AOF ファイルは大きくなります。

  • 書き込み方式:RDBはフォアグラウンド/バックグラウンド書き込み方式が利用できますが、AOFは書き込みコマンドを実行するたびにコマンドをバッファに格納する方式で、定期的に書き換えることができます。

  • データ損失: RDB は、クラッシュから最後の RDB 同期までの間のすべてのデータを失います。AOF は失われないか、I/O バッファに設定されたリフレッシュ方法に従って 1 秒以上損失します。数秒間のデータ。

これらの比較に基づいて、RDB 永続性は、ある時点でデータを保存し、マスター/スレーブ レプリケーションまたは完全なデータ オフ中にそれを他の場所にコピーするのにより適していることがわかります。 -site 災害復旧 、および AOF 永続性はデータ損失が少ないため、ローカル バックアップとして、また Reid がハングアップして再起動するときの障害復旧 としてより適しています。これが、Redis に 2 つの永続化メソッドが必要な理由についての私の理解です。 プログラミング関連の知識について詳しくは、

プログラミング入門

をご覧ください。 !

以上がRedis の 2 つの永続化メソッド。なぜ 2 つの永続化メソッドが必要なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjuejin.cnで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。