キャッシュ テクノロジを使用すると、データベースへの負荷が軽減され、アクセス効率が向上します。現在、エンタープライズプロジェクトではキャッシュがますます注目されています。ただし、キャッシュは単にプロジェクトを無造作に追加することを意味するものではありません。キャッシュをプロジェクトに統合することが最初のステップです。キャッシュによって引き起こされる浸透の問題と、その結果として生じる雪の跳ね返りの問題はすべて、早急に解決する必要がある問題です。この記事では、参考として私が日々のプロジェクトで使用しているソリューションを紹介します。
キャッシュの通常の使用法は図に示すとおりです:
図、キャッシュ使用プロセス:
1. まずキャッシュからデータを取得し、取得できた場合は直接ユーザーにデータを返します。これにより、データベースにアクセスする必要がなくなり、データベースへの負担が軽減されます。
2. キャッシュにデータがない場合は、データベースにアクセスします。
図に示すように、ここにはバグがあります。
図に示すように、キャッシュはデータベースのファイアウォールのようなものです。これにより、より頻繁にデータが要求されるため、データベースへの負担を軽減するためにキャッシュに保存します。しかし、誰かが悪意を持って攻撃すると、キャッシュに簡単に侵入し、データベースにあらゆる圧力をかけることができます。たとえば、上の図では、キャッシュ内のキーはすべて正の整数ですが、キャッシュにアクセスするキーとして負の数値を使用しています。これにより、キャッシュが侵入され、データベースに直接圧力がかかります。
同時実行性がどれほど大きくても、キャッシュ侵入の問題は必ず発生します。この前提に基づいて、キャッシュ侵入の理由を次のように分析します:
1. 悪意のある攻撃、キーの命名方法を推測し、キャッシュにないキーを使用してアクセスすると推定します。
2. 最初のデータ アクセスでは、キャッシュにデータがまだ存在しない場合、同時シナリオではすべてのリクエストがデータベースにプッシュされます。
3. データベース内のデータも空なので、データベースにアクセスしてもデータは取得できませんので、キャッシュ上には該当するデータが存在しないはずです。これも浸透につながる可能性があります。
キャッシュの侵入は、図に示すように、侵入の原因を段階的に回避することにあります。 #上に示したように、解決手順は次のとおりです:
1. Web サーバーの起動時に、同時に頻繁にアクセスされる可能性のあるデータを事前にキャッシュに書き込みます。 -これにより、ステップ 3 での多数のリクエストのキューイングとブロックが回避されます。Redis 関連の技術記事の詳細については、Redis チュートリアル 列をご覧ください。学ぶために !
以上がRedis キャッシュの侵入を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。