ホームページ >データベース >Redis >Redis はどのようにしてデータを保持しますか?

Redis はどのようにしてデータを保持しますか?

(*-*)浩
(*-*)浩オリジナル
2019-11-21 10:03:122894ブラウズ

Redis は、すべてのデータをメモリ上に格納するため、インメモリ データベースと呼ばれ、高速性能に優れていますが、データがメモリ上に格納されているからこそ、Redis を再起動すると、メモリ上に格納されているすべてのデータが削除されます。失った。データを永続化するために、Redis では RDB 方式と AOF 方式の 2 つの方式が提供されています。

Redis はどのようにしてデータを保持しますか?

1. RDB メソッド

RDB メソッドの永続化はスナップショットによって完了します。特定の条件下では、Redis が自動的にメモリ内のすべてのデータをコピーしてハードディスクに保存するこのプロセスを「スナップショット」と呼びます。 「スナップショット」は写真を撮るのと同じで、シャッターを押した瞬間に静止した写真を「スナップショット」といいます。

# Redis データのスナップショットには 4 つのケースがあります: (推奨学習: Redis ビデオ チュートリアル )

## 自動的に;


ユーザーが SAVE または BGSAVE コマンドを実行する場合、

は FLUSHALL コマンドを実行する場合、

レプリケーションを実行する場合。

2. AOF 方式

永続化は RDB を通じて実現され、Redis が異常終了すると、最後のスナップショット以降に変更されたデータはすべて失われます。プロセスの終了によるデータ損失のリスクを軽減するために、AOF 方式を使用してデータの永続化を実現できます。


AOF 永続性は、サーバーによって処理されたすべての書き込みおよび削除操作をログの形式で記録します。クエリ操作は記録されませんが、テキストの形式で記録されます。詳細は、操作記録ファイルに表示されます。

彼女の外観は、RDB の欠点 (データの不整合) を補うもので、ログの形式を使用して各書き込み操作を記録し、ファイルに追加します。 Redis が再起動されると、ログ ファイルの内容に基づいて書き込み命令が前から後ろに実行され、データの回復作業が完了します。

デフォルトでは、Redis は AOF 永続性を有効にしません。appendonly パラメーターを使用して開始できます: appendonly yes


AOF 永続性が有効になった後は、各実行で Redis が変更されます。データ コマンド, Redis は、コマンドをハードディスク上の AOF 形式ファイルに書き込みます。つまり、.aof 形式ファイルには、一部の Redis 命令が保存されます。

このとき注意すべき点は、Redis 内のデータを頻繁に操作すると、AOF 形式ファイルが占有するメモリがどんどん大きくなり、set foo を実行し続けるなど無駄な命令が多くなってしまうことです。 1、foo 2 を設定、foo 3 を設定します。

その場合、最初の 2 つの命令は意味がありません。Redis は非常に強力です。無意味な命令を自動的に削除します。つまり、特定の条件に達すると、Redis は自動的に AOF ファイルを書き換えます。この条件は設定できます。設定ファイルにあります。書き換え処理はメモリデータのみに関連し、以前の AOF ファイルとは関係がありません。これは RDB と同様です。


ハードディスク データを同期する場合、オペレーティング システムのキャッシュ メカニズムにより、データは実際にはハードディスクに書き込まれず、システムのハードディスク キャッシュに入ります。デフォルトでは、システムは 30 秒ごとに同期操作を実行します。この 30 秒の間にシステムが異常終了すると、ハードディスク メモリ内のデータは失われます。

Redis では、RDB モードと AOF モードを同時に有効にすることができるため、データのセキュリティが確保されるだけでなく、バ​​ックアップ操作も非常に簡単になります。 AOF はデータ損失の可能性を効果的に低減でき、RDB はデータのバックアップを簡単に実現できます。

以上がRedis はどのようにしてデータを保持しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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