Redis の永続性とは何ですか?Redis は、キーと値のインメモリ データベース (NoSQL) です。すべてのデータはメモリに保存されます。クライアント要求を処理する場合、以下に示すように、すべての操作はメモリ内で実行されます。 こうすることで何が問題になるのでしょうか? 実際、基本的なコンピューターの知識が少しでもあれば、サーバーがシャットダウンされると(さまざまな理由で)メモリに保存されたデータは消えてしまうことは誰でも知っています。サーバーのシャットダウンによってデータが消えるだけでなく、Redis サーバーデーモンが終了するとメモリ内のデータも消えてしまいます。 Redis をキャッシュとしてのみ使用するプロジェクトの場合、データの消失は大きな問題にならない可能性があります。データ ソースからデータを再ロードするだけです。ただし、ユーザーから送信された業務データを直接 Redis に保存し、Redis を重要な業務データを保存するデータベースとして使用する場合、Redis のメモリ データ損失の影響は壊滅的なものになる可能性があります。メモリ内でのデータ損失を回避するために、Redis は永続性のサポートを提供します。データを永続化できるように、メモリからハードディスクにデータを保存するさまざまな方法を選択できます。 Redis は、RDB と AOF という 2 つの異なるデータ永続化方法を提供します。これらのさまざまな永続化方法を詳しく紹介しましょう。 翻訳データベースRDB はスナップショット ストレージの永続化方式です。具体的には、ある瞬間のRedisのメモリデータをハードディスク上のファイルに保存します。デフォルトの保存ファイル名は dump.rdb です。 Redis サーバーが起動すると、dump.rdb ファイルのデータがメモリに再ロードされ、データが復元されます。 RDB永続モードを有効にするRDB 永続性を有効にするのは非常に簡単です。クライアントは、Save コマンドまたは bgsave コマンドを Redis サーバーに送信して、サーバーに rdb ファイルを生成させたり、サーバー構成ファイルを通じてトリガーとなる RDB 条件を指定したりすることができます。 1. 保存コマンド保存コマンドは同期操作です。 #データをディスクに同期する クライアントが永続性のためにサーバーに保存コマンド要求を送信すると、サーバーは保存コマンドの後にデータの同期が完了するまで他のクライアントからの要求をブロックします。
2. セーブsave コマンドとは異なり、bgsave コマンドは非同期操作です。 #データセットを非同期でディスクに保存する クライアントがサービスに bgsave コマンドを送信すると、Redis サーバーのメイン プロセスは子プロセスをフォークしてデータを同期します。データを rdb ファイルに保存した後、子プロセスは終了します。 そのため、save コマンドと比較すると、Redis サーバーは bgsave を処理するときに IO 書き込みに子スレッドを使用し、メイン プロセスは引き続き他の要求を受信できますが、フォークされた子プロセスは同期的であるため、子プロセスをフォークすると他の要求を受信できなくなります。つまり、子プロセスのフォークに時間がかかりすぎる場合 (通常は非常に高速)、bgsave コマンドは他のクライアントからの要求をブロックする可能性があります。 3. サーバー構成の自動トリガークライアント経由でコマンドを送信する方法の他に、Redis 構成ファイルの保存時に [一定秒数以内の書き込み操作の最小数] など、RDB 永続化をトリガーする条件を指定して RDB データの同期を開始するという方法もあります。 たとえば、設定ファイル redis.conf で次のオプションを指定できます。 # 900 秒以内に少なくとも1つの書き込みコマンドが発行される サーバーの起動時に構成ファイルが読み込まれます。 #サーバーを起動して設定ファイルをロードします サーバー構成ファイルを通じて RDB をトリガーするこの方法は、bgsave コマンドに似ています。トリガー条件が満たされると、子プロセスがフォークされ、データが同期されます。ただし、トリガー時間を短く設定しすぎると、RDB ファイルへの書き込みが頻繁に行われ、サーバーのパフォーマンスに影響が出る可能性があるため、この方法で RDB 永続性をトリガーしないことをお勧めします。時間を長く設定しすぎると、データが失われます。 rdbファイル上記では、サーバーに rdb ファイルを生成させる 3 つの方法を紹介しました。メインプロセスによって生成されるか子プロセスによって生成されるかに関係なく、プロセスは次のようになります。
RDB によって生成されるデフォルトのファイル名は dump.rdb です。もちろん、設定ファイルを通じてさらに詳細に設定することもできます。たとえば、単一のマシン上で複数の Redis サーバー プロセスを起動する場合、次に示すように、ポート番号ごとに異なる rdb 名を設定できます。 #rdbファイルを圧縮するかどうか RDBのいくつかの利点
RDBのいくつかの欠点
AOFRDB について説明した後、Redis の別の永続化方法である AOF (追加専用ファイル) について説明します。特定の瞬間のスナップショットを保存する RDB とは異なり、AOF 永続性は、クライアントからサーバーへのすべての書き込み操作コマンドを記録し、Redis プロトコルを使用して、これらの書き込み操作をサフィックス aof でファイルの末尾に追加します。 Redis サーバーを再起動すると、aof ファイル内のコマンドが読み込まれ、実行されてデータが復元されます。 AOF持続モードを有効にするRedis はデフォルトでは AOF 永続性を有効にしません。設定ファイルでこれを有効にして、次の redis.conf ファイルのように、より詳細な設定を行うことができます。 # aof メカニズムを有効にする 3つの書き込み戦略上記の設定ファイルでは、appendfsync オプションを通じて書き込み戦略を指定できます。選択肢は3つあります。 appendfsync 常に 1. 常にクライアントのすべての書き込み操作は aof ファイルに保存されます。この戦略は非常に安全ですが、書き込み操作ごとに IO 操作が必要になるため、非常に遅くなります。 2. 毎秒appendfsync のデフォルトの書き込み戦略では、aof ファイルを 1 秒ごとに 1 回書き込むため、最大で 1 秒分のデータが失われる可能性があります。 3. いいえRedis サーバーは AOF ファイルへの書き込みを担当しませんが、AOF ファイルへの書き込みのタイミングはオペレーティング システムが処理します。より高速ですが、最も安全性の低いオプションであり、推奨されません。 AOF ファイルの書き換えAOF は、クライアントの各書き込み操作を aof ファイルの末尾に追加します。たとえば、キーに対して incr コマンドが複数回実行されると、aof は各コマンドを aof ファイルに保存するため、aof ファイルは非常に大きくなります。 増分番号1 aof ファイルが大きすぎるため、データを復元するために aof ファイルを読み込むのに非常に時間がかかります。この問題を解決するために、Redis は aof ファイルの書き換えをサポートしています。 aof を書き換えることで、現在のデータを復元するための最小限のコマンド セットを生成できます。たとえば、上記の例の複数のコマンドは次のように書き直すことができます。 数値を100000に設定
書き直す2つの方法redis.conf 設定ファイルでオプション no-appendfsync-on-rewrite を設定することで、書き換えを有効にするかどうかを設定できます。この方法では、fsync ごとに書き換えが行われるため、サーバーのパフォーマンスに影響します。したがって、デフォルト値は no であり、推奨されません。 # デフォルトでは aof ファイルを書き換えない クライアントは bgrewriteaof コマンドをサーバーに送信し、これによりサーバーが AOF を書き換えることもできます。 # サーバーが非同期的に aof ファイルの追加コマンドを書き換えるようにする aof ファイルを書き換える利点
AOF ファイルの破損aof ログ ファイルを書き込むときに、Redis サーバーがクラッシュすると、aof ログ ファイルにフォーマット エラーが発生します。 Redis サーバーを再起動すると、Redis サーバーは aof ファイルの読み込みを拒否します。以下の手順に従って、AOF を修復し、データを回復できます。
#AOFログファイルを修復
AOFの利点AOF はログ ファイルを追加するだけなので、サーバー パフォーマンスへの影響が少なく、RDB よりも高速で、メモリの消費量も少なくなります。 AOFの欠点
RDB または AOF を選択しますか?上記の紹介を通じて、RDB と AOF の長所と短所を理解しました。どうやって選ぶ? 次の表現を通じて、RDB と AOF をいくつかの側面から比較することができます。適用する際には、実際のニーズに基づいて RDB または AOF を選択する必要があります。実際、データを十分に安全にしたい場合は、両方の方法を有効にすることができます。ただし、2 つの永続化方法で同時に IO 操作を実行すると、サーバーのパフォーマンスに重大な影響が出るため、選択をしなければならない場合があります。 RDB と AOF の両方が有効になっている場合、AOF に保存されたファイルは RDB ファイルよりも完全であるため、Redis は最初に AOF ログを使用してデータを復元します。 まとめRedis の永続化メカニズムに関する多くの知識が上記で説明されました。実際、Redis をキャッシュ サーバーとして使用するだけであれば、永続性についてまったく考慮する必要はありません。ただし、今日のほとんどのサーバー アーキテクチャでは、Redis はキャッシュ サーバーとしての役割を果たすだけでなく、ビジネス データを保存するデータベースとしても使用できます。この時点で、Redis の永続化戦略の違いと選択肢を理解する必要があります。 |
<<: 通信会社はVMwareと提携してテクノロジーの巨人へと変貌する
>>: 「南北水路計画」と同様に、人気の「東データ西コンピューティング」はクラウド コンピューティングに何をもたらすのでしょうか?
2014年10月31日は中国におけるMSNメッセンジャーの最終日だったと報じられた。WeiboやWe...
以前、非常に便利な SEO ブックマークレットを 13 個紹介しました。今回は、Google Ana...
[[275190]]新しいテクノロジーと新しいトレンドとして、エッジ コンピューティングはテクノロジ...
電子商取引が登場する前は、近所のスポーツ用品店に行ってナイキの靴を買ったとしても、その靴が値下げされ...
「中国中を旅して、最も美しく色彩豊かな貴州を訪ねよう」というおなじみのスローガンは、この古代の地、貴...
今日のSEO市場では、サイト全体の最適化の人気が高まり続けています。その結果、サイト全体の最適化ビジ...
私は長年ウェブサイトを運営しており、ウェブマスターが遭遇する可能性のあるあらゆる問題に遭遇してきまし...
企業がクラウド プロバイダーやクラウド ツールにますます依存するようになると、より自立した対応が必要...
9月9日から11日まで、2020年テンセントグローバルデジタルエコシステムカンファレンスがオンライン...
EvoBurst は、実は 1 年以上前から出ています。主にローエンドの OVZ 仮想 VPS を提...
さまざまなモバイル アプリケーション開発者の圧倒的な富の創造神話の背後には、この大規模なモバイル ア...
序文始める前に、日常生活でよく見かけるシーンを見てみましょう。ある日スーパーマーケットに買い物に行く...
ecovm は、kVM 仮想化、SSD ハードディスクに基づく特別な VPS を推進しており、サーバ...
最新のマーケティング手法では、キャンペーンのあらゆるステップで ROI を追跡できます。つまり、RO...
先週、「O2O?それって何?」という記事を書き、その後多くのO2O実践者と交流しました。その中で、北...