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 です。
1) すべての書き込みコマンドは aof_buf (バッファ) に追加されます。
2) AOF バッファは、対応するポリシーに従ってハードディスクと同期します。
3) AOF ファイルがますます大きくなるにつれて、圧縮を実現するために AOF ファイルを定期的に書き換える必要があります。
4) Redis サーバーが再起動されると、データ回復のために AOF ファイルをロードできます。
Redis 関連の技術記事の詳細については、Redis 入門チュートリアル 列にアクセスして学習してください。
以上がRedisを永続化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。