Redisのキャッシュキャッシュアバランシェ降伏キャッシュ浸透オン

私たちの日常の開発では、多くの場合、使用する必要がある大量のデータに関連した並行性の高い要件を、関与するキャッシュとしてのRedisが、キャッシュが雪崩を発生することがあり、キャッシュ、キャッシュの故障やその他の問題を貫通、ここで簡単な例私は質問の下に話すとその理由ソリューション。

キャッシュ雪崩

私は新しいウェブサイトを開設している場合、一部の人々が訪問に来る最初の日は、私もとても幸せですが、私は今日はほぼ同時にキャッシュ失敗の確立を訪問し、ケースを無視して、将来的には、人々がよりアクセスできるようになり、この時点で、データベースへの要求の多くは、上記のすべてに影響を与える、データベースがあるため、クマやダウンタイムの失敗することがあります。
キャッシュサーバの再起動やキャッシュの数が多い時の障害の1つの期間に集中した場合、キャッシュは雪崩と呼ばれています。

ソリューション

  1. 異なる設定するための異なるキー、有効期限をデフォルトの有効期限に加え、0-10分後に例えばランダムな値、集団的失敗を避けるために。

  2. 設定し、二次キャッシュを、有効期限が倍増しました。オリジナルのキャッシュの有効期限通知は、バックグラウンドで別のスレッドをトリガした場合、実際のキャッシュを更新し、古いデータの二次キャッシュに戻ります。

  3. データ暖かいです関連データの正式な展開先の前に直接リフレッシュするために、スケジュールされたタスクの後の行に、キャッシュにロード。

キャッシュの内訳

私はサイトがボーエンを書いた大スターを持っていることを前提とし、多くの人々はちょうど彼がキャッシュに近い関連とき、瞬間が期限切れになる彼を見るためにここに来
たデータベースへのリクエストが多いかもしれません。
シングルホットデータはキャッシュが故障と呼ばれ、有効期限の同時アクセスに高いです。

ソリューション

  1. セットホットデータが期限切れになることはありません。
  2. キャッシュミスした後、追加することによって、ミューテックススレッドの数を制御するために、書き込みキャッシュデータベースを読み込みます。スレッドがキーの故障を検出すると、他のスレッドは、ここで、読み込んでものを待っているときに、データベースの値は、データベースにアクセスできなくなりますが、ロックが有効期限を設定し、またはの値の場合にしなければならないキーロックに行きますスレッドは永続的にブロックされてハング。

キャッシュの浸透

私は、ファイアウォールを設定しなかった場合は、悪意のあるハッカーは、などの郵便配達不当な要求データ、などのツールを使用して、ID = -1、でも、データベースに過度の圧力が発生します攻撃そこには、このようなデータ・キャッシュ、データベースの値にそれぞれことなく、常にすることができますデータベースを倒します。
存在しないキーデータに対応する、キャッシュバイパスデータベースへの要求は、キャッシュが浸透と呼ばれます。

ソリューション

  1. 設定し、サーバ、ファイアウォール、管理およびIPアクセス数の多い違法行為を監視します。異なるIP効果がありません。
  2. 界面層の増加チェックサムたとえば、ユーザ認証チェック、校正パラメータ、フィルタパラメータは有効ではありません。
  3. データベースを取得していない、これはまだ空の結果キャッシュ、値がnullに設定されている短い時間、欠点はおそらくヌル値の多くをキャッシュすることです、また、データの一貫性に影響を及ぼします。
  4. ブルームフィルタビットマップ十分な大きさに可能なすべてのデータは、彼らが可能であり、ハッシュは、視覚的にデータが存在する場合がある場合、ビット異なるが、0は確かに戻らないデータベースに直接アクセスすることはないだろうかどうかを判断します。欠点は、データの合計量が大きい場合に、ブルームフィルタは、絶対的に正確されていない、非常に長くなることがあり、それが可能であり、他のすべてのデータビットは、データが存在しない場合です。

概要

もちろん、我々はまた、高可用性を活用することができます「と心の中で一つの足は」建てRedisの機能クラスタを、またはトラフィックの急増は、サービスの問題は、いくつかのデフォルトを返すために、非本質的なサービス、コアサービスがまだ利用可能であることを保証するためには、発生したとき値、またはヒント、ユーザーが再びリフレッシュすることができます。

リリース5元の記事 ウォンの賞賛0 ビュー74

おすすめ

転載: blog.csdn.net/jy615183000/article/details/105345293