ホームページ  >  記事  >  データベース  >  Redis を永続化する 2 つの方法は何ですか?

Redis を永続化する 2 つの方法は何ですか?

王林
王林転載
2021-01-29 09:35:582752ブラウズ

Redis を永続化する 2 つの方法は何ですか?

1. redis の概要

REmote DIctionary Server (Redis) は、Salvatore Sanfilippo によって作成されたキーと値のストレージ システムです。

(学習ビデオ共有: redis ビデオ チュートリアル )

Redis は、ANSI C 言語で書かれたオープン ソース ソフトウェアで、BSD プロトコルに準拠し、ネットワークをサポートし、メモリまたはメモリに基づくことができ、永続的なログ タイプ、Key-Value データベース、複数の言語で API を提供します。

これは、値が文字列、ハッシュ、リスト、セット、ソートされたセットなどのタイプになる可能性があるため、データ構造サーバーと呼ばれることがよくあります。

これは memcached に似ていますが、データを永続化でき、幅広いデータ型をサポートします。文字列、リンク リスト、セット、ソート セットがあります。サーバー側でのセットの和集合、共通集合、補数(差分)の計算をサポートし、さまざまなソート機能もサポートします。したがって、Redis はデータ構造サーバーとみなすこともできます。

Redis 内のすべてのデータはメモリに保存され、その後非同期で時々ディスクに保存されます (これは「半永続モード」と呼ばれます)。すべてのデータ変更は追加専用ファイルに書き込むこともできます ( aof) (これは「完全永続モード」と呼ばれます)。

Redis のデータはメモリ上に保存されるため、永続化が設定されていない場合、redis の再起動後にすべてのデータが失われるため、redis の永続化機能を有効にしてデータをディスクに保存する必要があります。再起動すると、その後、ディスクからデータを回復できます。 Redis は永続化のための 2 つの方法を提供します。1 つは RDB 永続化 (原則はメモリ内の Reid のデータベース レコードをディスク上の RDB 永続化に定期的にダンプすることです)、もう 1 つは AOF (ファイル追加のみ) 永続化 (原則は Reid のデータベース レコードをメモリに書き込むことです) です。操作ログをファイルに追加する方法)。では、これら 2 つの永続化方法の違いは何でしょうか?また、どのように選択すればよいのでしょうか?インターネットで読んだもののほとんどは、これら 2 つの方法を構成して使用する方法を紹介していますが、2 つの違いや、どのようなアプリケーション シナリオで使用されるかについては紹介されていません。

2. 2 つの違いは、

RDB 永続性は、指定された時間間隔内にメモリ内のデータ セットのスナップショットをディスクに書き込むことを指します。実際の操作プロセスは、子プロセスでは、まずデータセットを一時ファイルに書き込み、書き込みが成功したら、以前のファイルを置き換えてバイナリ圧縮して保存します。

Redis を永続化する 2 つの方法は何ですか?

3. 2 つのメリットとデメリット

RDB のメリットは何でしょうか?

1). この方法を採用すると、Redis データベース全体にファイルが 1 つだけ含まれるようになり、ファイルのバックアップに最適です。たとえば、過去 24 時間のデータを 1 時間ごとにアーカイブし、過去 30 日間のデータを毎日アーカイブすることも計画できます。このようなバックアップ戦略により、システムに致命的な障害が発生した場合でも、非常に簡単に復元できます。

2). 災害復旧には、RDB が非常に良い選択です。なぜなら、単一のファイルを簡単に圧縮して、他の記憶メディアに転送できるからです。

3). パフォーマンスを最大化します。 Redis サービス プロセスの場合、永続化を開始するときに必要なのは、子プロセスをフォークアウトすることだけであり、その後、子プロセスが永続化作業を完了するため、サービス プロセスによる IO 操作の実行を大幅に回避できます。

4). AOF機構と比較して、データセットが大きい場合にはRDBの起動効率が高くなります。

RDB の欠点は何ですか?

1). データの高可用性を確保したい場合、つまりデータ損失を最大限に回避したい場合、RDB は良い選択ではありません。スケジュールされた永続化の前にシステムがクラッシュすると、ディスクに書き込まれる時間がなかったデータが失われるためです。

2).RDB はフォーク子プロセスを通じてデータの永続化を支援するため、データ セットが大きい場合、サーバー全体が数百ミリ秒、場合によっては 1 秒間サービスを停止する可能性があります。

AOF の利点は何ですか?

1). このメカニズムにより、より高度なデータ セキュリティ、つまりデータの永続性が実現します。 Redis は 3 つの同期戦略、つまり 1 秒ごとの同期、変更ごとの同期、および同期なしを提供します。実際、1 秒ごとの同期も非同期で完了し、その効率も非常に高いのですが、唯一の違いは、システムがダウンすると、この 1 秒以内に変更されたデータは失われることです。変更が同期されるたびに、それを同期永続性と考えることができます。つまり、発生したすべてのデータ変更はすぐにディスクに記録されます。この方法は最も効率が低いことが予測できます。同期がないことについては、これ以上言う必要はなく、誰もが正しく理解できると思います。

2). このメカニズムではログ ファイルの書き込みに追加モードを使用するため、書き込みプロセス中にダウンタイムが発生した場合でも、ログ ファイル内の既存の内容は破壊されません。ただし、この操作でデータの半分しか書き込まず、システム クラッシュが発生しても心配しないでください。次回 Redis を開始する前に、redis-check-aof ツールを使用してデータの整合性の問題を解決できます。

3). ログが大きすぎる場合、Redis は書き換えメカニズムを自動的に有効にすることができます。つまり、Redis は変更されたデータを追加モードで古いディスク ファイルに継続的に書き込み、同時に、この期間中に実行された変更コマンドを記録する新しいファイルも作成します。したがって、書き換えスイッチングを行う際のデータの安全性をより確保することができる。

4). AOF には、すべての変更操作を記録するための、明確にフォーマットされたわかりやすいログ ファイルが含まれています。実際、このファイルを通じてデータの再構築を完了することもできます。

AOF の欠点は何ですか?

1). 同じ数のデータ セットの場合、通常、AOF ファイルは RDB ファイルよりも大きくなります。大規模なデータ セットを復元する場合、RDB は AOF よりも高速です。

2). 同期戦略によっては、動作効率の点で AOF は RDB よりも遅くなることがよくあります。つまり、同期戦略の 1 秒あたりの効率は比較的高く、同期無効化戦略の効率は RDB と同等です。

この 2 つのどちらかを選択する基準は、キャッシュ一貫性 (aof) を高める代わりにシステムがある程度のパフォーマンスを犠牲にしても構わないのか、それとも書き込み操作時のパフォーマンスを上げる代わりにバックアップを有効にしないつもりなのかを確認することです。手動で保存を実行した場合は、再度バックアップ(rdb)を実行してください。 RDB には、より結果的に一貫した意味があります。

4. 一般的に使用される構成

RDB 永続化構成

Redis は、データ セットのスナップショットを dump.rdb ファイルにダンプします。さらに、構成ファイルを使用して Redis サーバー ダンプ スナップショットの頻度を変更することもできます。6379.conf ファイルを開いた後、save を検索すると、次の構成情報が表示されます:

save 900 1 #At 900 秒 (15 分) 後、少なくとも 1 つのキーが変更された場合は、メモリ スナップショットをダンプします。

save 300 10 #300 秒 (5 分) 後、少なくとも 10 個のキーが変更された場合は、メモリ スナップショットをダンプします。

save 60 10000 #60 秒 (1 分) 後、少なくとも 10000 個のキーが変更された場合は、メモリ スナップショットをダンプします。

AOF 永続化構成

Redis 構成ファイルには 3 つの同期方法があります。

appendfsync always #データ変更が発生するたびに書き込まれます。 AOF をインポートします。ファイル。

appendfsync eachsec #1 秒ごとに 1 回同期します。このポリシーは AOF のデフォルトのポリシーです。

appendfsync no #同期しない。効率的ですが、データは保持されません。

5.参考資料

http://blog.csdn.net/jackpk/article/details/30073097
http://www.jb51.net/article/65264.htm

関連する推奨事項: redis データベース チュートリアル

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

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。