RDB は、Redis が永続化のために使用する方法で、現在のメモリ内のデータ セットのスナップショット、つまり Snapshot スナップショット (すべてのキーデータベース内の値ペア).データ)。リカバリ中、スナップショット ファイルはメモリに直接読み込まれます。
RDB には自動トリガーと手動トリガーという 2 つのトリガー方法があります。
redis.conf 設定ファイルの SNAPSHOTING の下で、この記事で紹介しました。
①.save:これは、Redis をトリガーする RDB 永続条件、つまりメモリ内のデータをいつ保存するかを設定するために使用されます。ハードディスクです。たとえば、「m n を保存」などです。データセットが m 秒以内に n 回変更された場合、bgsave が自動的にトリガーされることを示します (このコマンドは以下で紹介され、RDB 永続性を手動でトリガーするコマンド)
デフォルトの構成は次のとおりです:
save 900 1:表示900 秒内如果至少有 1 个 key 的值变化,则保存 save 300 10:表示300 秒内如果至少有 10 个 key 的值变化,则保存 save 60 10000:表示60 秒内如果至少有 10000 个 key 的值变化,则保存
もちろん、Redis のキャッシュ機能を使用するだけで永続化が必要ない場合は、すべての保存行をコメントアウトして保存機能を無効にすることができます。 save "" を使用して
② を無効にできます。stop-writes-on-bgsave-error: デフォルト値は yes です。 RDB が有効で、最後のデータのバックグラウンド保存が失敗した場合、Redis がデータの受信を停止するかどうか。これにより、データがディスクに正しく保存されていないことがユーザーにわかります。そうしないと、障害が発生したことに誰も気づかなくなります。 Redis が再起動すると、再びデータの受信を開始できます。
③, rdbcompression;デフォルト値は、yes です。ディスクに保存されるスナップショットについては、保存のために圧縮するかどうかを設定できます。その場合、redis は圧縮に LZF アルゴリズムを使用します。圧縮に CPU を消費したくない場合は、この機能をオフに設定できますが、ディスクに保存されるスナップショットのサイズは大きくなります。
④、rdbchecksum: デフォルト値はyesです。スナップショットを保存した後、Redis に CRC64 アルゴリズムを使用させてデータ検証を行うこともできますが、これによりパフォーマンスの消費が約 10% 増加します。パフォーマンスを最大限に向上させたい場合は、この機能をオフにすることができます。
⑤、dbfilename:スナップショットのファイル名を設定します。デフォルトはdump.rdbです。
##⑥、dir:ストレージパスを設定しますスナップショット ファイルの。この構成項目はファイル名ではなくディレクトリである必要があります。デフォルトでは、現在の構成ファイルと同じディレクトリに保存されます。
つまり、設定ファイルに設定したsaveメソッドにより、実際の動作が設定形式に合致するとRDB永続化が行われ、現在のメモリスナップショットがdirで設定されたディレクトリに保存されます。ファイル名は、設定された dbfilename によって決まります。 ②. 手動トリガー RDB 永続化のために Redis を手動でトリガーするには 2 つのコマンドがあります: 1. save このコマンドは現在の Redis をブロックします。サーバーでは、save コマンドの実行中、RDB プロセスが完了するまで Redis は他のコマンドを処理できません。 明らかに、このコマンドは比較的大きなメモリを持つインスタンスに対して長期的なブロックを引き起こします。これは致命的な欠陥です。この問題を解決するために、Redis は 2 番目の方法を提供します。 2. bgsaveこのコマンドを実行すると、Redis はバックグラウンドでスナップショット操作を非同期に実行し、スナップショットはクライアントの要求に応答することもできます。 Redis プロセスがフォーク操作を実行して子プロセスを作成すると、子プロセスは RDB 永続化プロセスの実行を担当し、完了後に自動的に終了します。ブロッキングはフォークフェーズ中にのみ発生し、通常は非常に短期間です。基本的に、Redis 内のすべての RDB 操作は bgsave コマンドを使用します。
ps:lushall コマンドを実行すると dump.rdb ファイルも生成されますが、これは空で意味がありません
3. データの復元 バックアップ ファイル (dump.rdb) を Redis のインストール ディレクトリに移動し、サービスを開始すると、Redis は自動的にファイル データをメモリにロードします。 Redis サーバーは、RDB ファイルのロード中、ロード作業が完了するまでブロックされます。 Redis のインストール ディレクトリを取得するには、config get dir コマンドを使用できます。 4. RDB 永続性の停止 Redis のキャッシュ機能を利用したい場合は、Redis の永続化機能を使用するのとは異なりますので、現時点では RDB の永続化を停止した方がよいでしょう。保存機能を無効にするには、上記のように設定ファイル redis.conf 内のすべての保存行をコメントアウトするか、空の文字列を直接使用して無効にします。 save "" コマンドを渡すこともできます。 :1 | redis-cli 構成セットの保存 |
123456789 |
構造体 } |
2 3 4 5 6 |
構造体
|
2 3 |
save 900 1: 900 秒以内に少なくとも 1 つのキーがあるかどうかを示します。値が変更された場合は、それを保存します。
|
②、ダーティカウンタとlastsave属性
ダーティ カウンタは、save コマンドまたは bgsave コマンドが最後に正常に実行されてからの距離を記録します。Redis サーバーは、変更された回数 (書き込み、削除、更新などを含む) を実行します。 lastsave 属性は、save コマンドまたは bgsave コマンドが最後に正常に実行された時間を記録するタイムスタンプです。 これら 2 つのコマンドを通じて、サーバーが変更操作を正常に実行すると、ダーティ カウンタが 1 ずつ増加し、lastsave 属性に save または bgsave が最後に実行された時間が記録されます。定期操作関数。severCron はデフォルトで 100 ミリ秒ごとに実行されます。この関数は、saveparams 配列内のすべての保存条件を調べてチェックします。1 つの条件が満たされる限り、bgsave コマンドが実行されます。 実行が完了すると、ダーティ カウンタは 0 に更新され、lastsave も実行されたコマンドの完了時刻に更新されます。以上がRedis における RDB 永続性の分析例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。