この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 14227|答える: 1

[レディス] Redisの2つの永続性手法と原則

[リンクをコピー]
掲載地 2017/08/24 16:37:45 | | |
Redisは高度なキー値データベースです。 memcachedに似ていますが、データは永続化でき、データ型も豊富です。 文字列、連結リスト、集合、順序付きコレクションがあります。 サーバー側でコレクションの合計、交差、補数(差分)の計算をサポートし、さまざまなソート機能もサポートしています。 したがって、Redisはデータ構造サーバーとも見なせます。
    すべてのRedisデータはメモリに保存され、その後時折非同期的にディスクに保存されます(これを「セミパーシスタントモード」と呼びます)。 また、すべてのデータ変更をAppend Only File(AOF)に書き込むこともできます(これを「フルパーシステンスモード」と呼びます)。
最初の方法はfilesnapshottingです。デフォルトのredisはスナップショット(バイナリファイル、dump.rdb、このファイル名も指定可能)の形でデータをディスクに永続化し、設定ファイルのフォーマットは次の通りです:save N Mとは、redisで少なくともM件の修正が起きた場合にN秒以内にredisがディスクにスナップショットを取得できることを意味します。 もちろん、手動で保存やbgsave(非同期)を実行してスナップショットを撮ることも可能です。

動作の簡単な説明は以下の通りです:Redisが永続化を必要とする場合、Redisは子プロセスをフォークします。 子プロセスはデータをディスク上の一時的なRDBファイルに書き込みます。 サブプロセスが一時ファイルの書き込みを終えると、元のRDBを置き換えます。これはコピーオンライトの利点があります

また、永続性メソッド(Appendのみ:filesnapshotting)もあります。redisが異常に死んでいると、最近のデータが失われます(失われたデータ量はセーブポリシーの設定によります)。これが最大の欠点で、ビジネス量が多いと失われるデータ量が多くなります。 追加のみ方式はすべてのデータ損失を達成できますが、redisのパフォーマンスは劣ります。 AOFはプロセス全体を通じて永続化可能で、設定ファイルでのみ有効化(デフォルトは「no」)、付け加えのみ「yes」です。AOFが有効化された後、redisがデータ変更コマンドを実行するたびに、そのデータがAOFファイルに追加され、redisが再起動されると、redisが閉じる直前の瞬間に復元するために「リプレイ」のためにAOFファイルが読み込まれます。

LOGの書き換え データが変更されるにつれてAOFファイルがどんどん大きくなり、その多くはキーの変更を記録します。 したがって、redisには興味深い機能があります。クライアント側の操作に影響を与えずに、バックグラウンドでAOFファイルを再構築できるという点です。 BGREWRITEAOFコマンドをいつでも実行すると、現在のメモリから最も短いコマンドシーケンスがディスクに書き込まれ、これらのコマンドは状態変更やカウンターの変更など不要な変更なしに現在のデータ状況を完全に構築できるため、AOFファイルのサイズを削減できます。 そのため、OFを使う際には、redisはBGREWRITEAOFの使用も推奨しています。

AOFファイルを更新する方法は3つあり、設定パラメータ appendfsyncを参照します。appendfsyncは修正コマンドが提出されるたびにfsyncを呼び出し、AOFファイルにフラッシュします。これは非常に遅いですが、非常に安全です。 appendfsyncは毎秒fsyncを呼び出してAOFファイルに素早くフラッシュしますが、1秒以内にデータを失うこともあります。 appendfsyncはOSのリフレッシュに依存していません。redisはOVを積極的にリフレッシュしませんが、これが最速ですがセキュリティは低いです。 速度とセキュリティの両方を考慮しているため、デフォルトで1秒あたりのリフレッシュが推奨されています。

システム上の理由でAOFが破損している可能性があり、redisがこのOFを読み込めなくなった場合、以下の手順に従って修正できます:まず、AOFファイルのバックアップをして別の場所にコピーします。 元のOFファイルを修正し、実行:$redis-check-aof –fix; diff –uコマンドを使って、修復前後のファイルの不整合箇所を確認できます。 Redisサービスを再起動してください。

LOG Rewriteの仕組み:コピーオンライトも同様に使います。まずredisは子プロセスをフォークします。 子プロセスは最新のAOFを一時ファイルに書き込みます。 親プロセスは、最も実行された変更を増分的にメモリに書き込みます(この時点では古いAOFがまだ書き込まれており、失敗した場合は書き換えても安全です)。 子プロセスが一時ファイルの書き換えを終えると、親プロセスは信号を受け取り、以前の増分的なメモリ変更を一時ファイルの末尾に書き込みます。 Redisは古いOFファイルの名前を変更し、一時ファイルも名前を変更し、新しいOFへの書き込みを開始します。

最後に、万が一(マシンやディスクがクラッシュした場合)に備えて、filesnapshottingやAppend-onlyで生成された*rdb *.aofファイルをリモートマシンに定期的にバックアップすることを忘れないでください。 私は30分ごとにcrontabを使ってSCPを操作しています。 Redisのマスタースレーブ機能は使わなかった。30分のバックアップで十分だし、マスタースレーブがあるとマシンの無駄に感じるからだ。 最終的には用途によります。




先の:Redisには3つのスタート方法があります
次に:redisにおけるセーブとbgsaveの違い
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com