Redis 永続化メカニズムの実装原理は何ですか?
永続性: Redis はインメモリ データベースであり、データはメモリに保存されます。プロセスの終了によるデータの永続的な損失を避けるために、Redis 内のデータは定期的にいくつかのデータベースに保存される必要があります。フォーム (データまたはコマンド) はメモリからハードディスクに保存され、次回 Redis が再起動されるときに、永続ファイルを使用してデータが回復されます。さらに、災害時バックアップの場合、永続ファイルをリモートの場所にコピーできます。
永続プロセスとは何ですか?
Redis データはディスクに保存できるので、そのプロセスはどのようなものですか?
次の 5 つのプロセスが必要です。
(1) クライアントは書き込み操作をサーバーに送信します (データはクライアントのメモリ内にあります)。
(2) データベース サーバーは書き込み要求のデータを受信します (データはサーバーのメモリ内にあります)。
(3) サーバーは、write システム コールを呼び出して、データをディスクに書き込みます (データはシステム メモリのバッファ内にあります)。
(4) オペレーティング システムは、バッファ内のデータをディスク コントローラに転送します (データはディスク キャッシュにあります)。
(5) ディスク コントローラーは、データをディスクの物理メディアに書き込みます (データは実際にはディスク上に置かれます)。
これら 5 つのプロセスは、理想的な条件下では通常の保存プロセスですが、ほとんどの場合、マシンなどにさまざまな障害が発生します。上記の 3 番目のステップが完了している限り、永続化して保存できます。残りの 2 つのステップはオペレーティング システムによって自動的に実行されます。オペレーティング システムに障害が発生した場合は、上記の 5 つのステップをすべて完了する必要があります。その場合のみです。
上記の 5 つの手順に対処するために、redis は 2 つの異なる永続化メソッドを提供します。RDB (Redis DataBase) と AOF (Append Only File) です。
フォーク操作が必要なため、RDB のスナップショットと AOF の書き換えにより Redis がブロックされるため、リソースを非常に消費する操作になります。したがって、Redis メインプロセスの応答に影響を与えないように、ブロッキングを可能な限り減らす必要があります。
1. フォークの頻度を減らします。たとえば、RDB を手動でトリガーしてスナップショットと AOF 書き換えを生成できます;
2. Redis の最大メモリ使用量を制御して、フォークの過剰な消費を防ぎます。ロング;
3. より強力なハードウェアを使用する;
4. 物理メモリ不足によるフォークの失敗を避けるために、Linux メモリ割り当て戦略を適切に設定する
オンライン実践経験 :1. Redis 内のデータが特に機密ではない場合、またはデータが他の方法で書き換えられる場合は、永続化をオフにすることができます。データが失われた場合は、他の方法で復元できます。意味;
2. Redis の状況を定期的にチェックする独自の戦略を開発し、バックアップとデータの書き換えを手動でトリガーします;
3. マスター/スレーブ マシンに参加し、1 つのスレーブを使用できますクライアント コマンド;
4.RDB 永続性と AOF 永続性は同時に存在し、一緒に使用することができます。
以上がRedis 永続化メカニズムの実装原理とプロセスは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。