Redis には 2 種類の永続性 (AOF と RDB) があります . この記事では、これら 2 種類の永続性を理解し、それぞれの長所と短所を見て、Redis に 2 種類の永続性が必要な理由を紹介します。粘り強さ、それが皆さんのお役に立てば幸いです。
ご存知のとおり、Redis には AOF と RDB という 2 つの永続化メソッドが用意されています。簡単に振り返ってみましょう。
SAVE
とバックグラウンド RDB 永続化コマンド BGSAVE
を提供します。フォアグラウンドで実行すると、他の Redis コマンドがブロックされ、実行すると、他の Redis コマンドがブロックされます。 Redis はバックグラウンドでクライアントのコマンド要求の処理を続行することもできます。 od
コマンドを使用して読み取り可能な形式に変換できます。 [関連する推奨事項: Redis ビデオ チュートリアル ]
Appen Only File
で、データの代わりに書き込みコマンドが保存される追加永続化メソッドを意味します。 aof_buf
バッファーの末尾に書き込みコマンドを追加します。 flushAppendOnlyFile
関数が呼び出され、aof_buf
バッファーの内容が AOF ファイルに書き込まれます。 sync
は、ファイルがオペレーティング システムのバッファに書き込まれるときにディスクに直接同期されるかどうかを示します。構成を通じて、即時同期、1 秒ごとの同期、およびアクティブな同期なし (オペレーティング システムによって制御される) の 3 つの同期方法を選択できます。ファイル I/O バッファリングについて: https://www.litreily.top/2018/10/25/io-cache/
BGREWRITEAOF
を使用して定期的に書き換えることができ、重複したコマンド、期限切れのコマンド、マージされたコマンドなどを減らすことができます。 fork
サブプロセスの形式で実装されるバックグラウンドの書き換えをサポートしています。子プロセスにはサーバー プロセスのデータのコピーがあり、ロックを使用せずにデータのセキュリティが確保されます。さらに、AOF を使用してバッファを書き換え、データの不整合を解決します。 ファイル サイズが小さく、コールド バックアップのコピーに適しています
AOF と比較して、バックアップと復元の速度が高速です
大量のデータが失われる
子プロセスをフォークして BGSAVE## を実行する# 一定量のメモリ リソースを消費します
aof_buf を記述する必要があります 毎回、AOF を開く 永続化後、QPS はわずかに減少します
これらの比較に基づいて、RDB 永続性は、ある時点でデータを保存し、マスター/スレーブ レプリケーションまたは完全なデータ オフ中にそれを他の場所にコピーするのにより適していることがわかります。 -site 災害復旧 、および AOF 永続性はデータ損失が少ないため、ローカル バックアップとして、また Reid がハングアップして再起動するときの障害復旧 としてより適しています。これが、Redis に 2 つの永続化メソッドが必要な理由についての私の理解です。 プログラミング関連の知識について詳しくは、
プログラミング入門以上がRedis の 2 つの永続化メソッド。なぜ 2 つの永続化メソッドが必要なのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。