ホームページ  >  記事  >  データベース  >  Redisを永続化する方法

Redisを永続化する方法

(*-*)浩
(*-*)浩オリジナル
2019-11-26 09:59:514261ブラウズ

Redis データはメモリに保存されるため、永続化が設定されていない場合、redis の再起動後にすべてのデータが失われます。そのため、redis の永続化機能を有効にして、データをディスクに保存する必要があります。redis の再起動後、ディスクからデータを回復できます。

Redisを永続化する方法

redis は永続化のために 2 つの方法を提供します。 1 つは RDB 永続化 (原理はメモリ内のデータベースに Reid を記録することです) への定期的なダンプです。ディスク上の RDB 永続化)、もう 1 つは AOF (Append Only File) 永続化です (原則として、Reids の操作ログを追加形式でファイルに書き込む)。

RDB: RDB 永続化は、現在のプロセス データのスナップショットを生成し、ハードディスクに保存するプロセスです。RDB 永続化のトリガー プロセスは、手動トリガーと自動トリガーに分けられます。 (推奨学習: Redis ビデオ チュートリアル )

トリガー メカニズム

手動トリガーは、save コマンドと bgsave コマンドにそれぞれ対応します

save コマンド: RDB プロセスが完了するまで現在の Redis サーバーをブロックします。比較的大きなメモリを持つインスタンスの場合、長期的なブロックが発生するため、オンラインでの使用はお勧めできません。

DB saved on disk

bgseve コマンド: Redis プロセスはフォーク操作を実行して子プロセスを作成します。RDB 永続化プロセスは子プロセスを担当し、完了後に自動的に終了します。ブロッキングはフォークフェーズ中にのみ発生し、通常は非常に短期間です。

* Background saving started by pid 3151
* DB saved on disk
* RDB: 0 MB of memory used by copy-on-write
* Background saving terminated with success

自動トリガー

次のシナリオでトリガーされます

1) 使用します「save m n」などの保存関連の設定。データセットが m 秒以内に n 回変更されると、bgsave が自動的にトリガーされることを示します。

2) スレーブノードがフルコピー操作を実行すると、マスターノードは自動的に bgsave を実行して RDB ファイルを生成し、スレーブノードに送信します。

3) debug reload コマンドを実行して Redis をリロードすると、保存操作も自動的にトリガーされます。

4) デフォルトでは、shutdown コマンド実行時に AOF 永続化機能が有効になっていない場合、bgsave が自動的に実行されます。

AOF: 書き込まれた各コマンドを独立したログに記録し、再起動時に AOF ファイル内のコマンドを再実行してデータを復元します。主な機能: リアルタイム データの永続性の問題を解決します。

AOF の使用

AOF 機能を有効にするには、構成を appendonly yes に設定する必要があります。これはデフォルトでは有効になっていません。ファイル名は appendfilename 構成によって設定され、デフォルトは appendonly.aof です。

Redisを永続化する方法

1) すべての書き込みコマンドは aof_buf (バッファ) に追加されます。

2) AOF バッファは、対応するポリシーに従ってハードディスクと同期します。

3) AOF ファイルがますます大きくなるにつれて、圧縮を実現するために AOF ファイルを定期的に書き換える必要があります。

4) Redis サーバーが再起動されると、データ回復のために AOF ファイルをロードできます。

Redis 関連の技術記事の詳細については、Redis 入門チュートリアル 列にアクセスして学習してください。

以上がRedisを永続化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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