ホームページ >データベース >Redis >Redis がダウンしている場合はどうすればよいですか?

Redis がダウンしている場合はどうすればよいですか?

(*-*)浩
(*-*)浩オリジナル
2019-06-17 14:31:405327ブラウズ

すべての Redis データがメモリ内にあることは誰もが知っています。突然のダウンタイムが発生すると、すべてのデータが失われます。では、どのように解決すればよいでしょうか?

Redis がダウンしている場合はどうすればよいですか?

#Redis データが障害によって失われないことを保証するメカニズムが必要です。このメカニズムが Redis の永続化メカニズムです。 (推奨学習: Redis ビデオ チュートリアル )

Redis には 2 つの永続化メカニズムがあり、1 つ目はスナップショット、2 つ目は AOF ログです。スナップショットは完全バックアップであり、AOF ログは継続的な増分バックアップです。スナップショットはメモリ データのバイナリ シリアル化形式であり、ストレージが非常にコンパクトですが、AOF ログにはメモリ データ変更の命令レコード テキストが記録されます。 AOF ログは、長期運用中に非常に大きくなります。データベースの再起動時に、コマンドの再生のために AOF ログをロードする必要があり、非常に長い時間がかかります。そのため、AOF ログを定期的に書き換えて、サイズをスリム化する必要があります。 AOF ログ。

スナップショットの原則

Redis がシングルスレッド プログラムであることはわかっています。このスレッドは、複数のクライアント ソケットとメモリ データ構造の同時読み取りおよび書き込み操作を担当します。論理的な読み取りと書き込み。

サービス ラインでリクエストを行う際、Redis はメモリ スナップショットも実行する必要があります。メモリ スナップショットでは Redis がファイル IO 操作を実行する必要がありますが、ファイル IO 操作では多重化 API を使用できません。
これは、単一のスレッドがサービス ラインでリクエストを行っている間、ファイル IO 操作も実行する必要があり、ファイル IO 操作によりサーバー リクエストのパフォーマンスが大幅に低下することを意味します。

もう 1 つの重要な問題があります。オンライン ビジネスを妨げないように、Redis はクライアントの要求に応答しながら持続する必要があります。永続化中もメモリのデータ構造は変化し続けます。たとえば、大きなハッシュ辞書が永続化されているのに、リクエストが来てそれを削除してもまだ永続化されていない場合、どうすればよいでしょうか?

Redis はオペレーティング システムのマルチプロセス COW (Copy On Write) メカニズムを使用してスナップショットの永続性を実現しますが、このメカニズムは非常に興味深いものですが、知っている人はほとんどいません。

AOF 原則

AOF ログには、Redis サーバーの一連のコマンド シーケンスが保存され、メモリを変更するコマンド レコードのみが記録されます。

AOF ログには、Redis インスタンスの作成以降に変更されたすべての命令シーケンスが記録されていると仮定すると、空の Redis インスタンスですべての命令を順番に実行する (つまり、状態を「再生」する) ことで Redis を復元できます。現在のインスタンスのメモリ内データ構造。

Redis は、クライアントの変更指示を受信した後、パラメーターの検証とロジック処理を実行します。問題がなければ、指示テキストはすぐに AOF ログに保存されます。つまり、指示は最初に実行され、その後に実行されます。ログの保存。これは、最初にログを保存してから論理処理を実行する leveldb や hbase などのストレージ エンジンとは異なります。

Redis を長期間運用すると、AOF ログはますます長くなります。インスタンスがクラッシュして再起動された場合、AOF ログ全体を再生するには非常に時間がかかり、その結果、Redis は長期間外部サービスを提供できなくなります。したがって、AOF ログをスリム化する必要があります。

Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。

以上がRedis がダウンしている場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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