検索
ホームページデータベースRedisRedis キャッシュの侵入を解決する方法

Redis キャッシュの侵入を解決する方法

Jun 22, 2019 pm 05:52 PM
redisキャッシュの侵入

Redis キャッシュの侵入を解決する方法

キャッシュ テクノロジを使用すると、データベースへの負荷が軽減され、アクセス効率が向上します。現在、エンタープライズプロジェクトではキャッシュがますます注目されています。ただし、キャッシュは単にプロジェクトを無造作に追加することを意味するものではありません。キャッシュをプロジェクトに統合することが最初のステップです。キャッシュによって引き起こされる浸透の問題と、その結果として生じる雪の跳ね返りの問題はすべて、早急に解決する必要がある問題です。この記事では、参考として私が日々のプロジェクトで使用しているソリューションを紹介します。

1. キャッシュペネトレーションの原理

キャッシュの通常の使用法は図に示すとおりです:

Redis キャッシュの侵入を解決する方法

図、キャッシュ使用プロセス:

1. まずキャッシュからデータを取得し、取得できた場合は直接ユーザーにデータを返します。これにより、データベースにアクセスする必要がなくなり、データベースへの負担が軽減されます。

2. キャッシュにデータがない場合は、データベースにアクセスします。

図に示すように、ここにはバグがあります。

Redis キャッシュの侵入を解決する方法

図に示すように、キャッシュはデータベースのファイアウォールのようなものです。これにより、より頻繁にデータが要求されるため、データベースへの負担を軽減するためにキャッシュに保存します。しかし、誰かが悪意を持って攻撃すると、キャッシュに簡単に侵入し、データベースにあらゆる圧力をかけることができます。たとえば、上の図では、キャッシュ内のキーはすべて正の整数ですが、キャッシュにアクセスするキーとして負の数値を使用しています。これにより、キャッシュが侵入され、データベースに直接圧力がかかります。

2. キャッシュ侵入の理由

同時実行性がどれほど大きくても、キャッシュ侵入の問題は必ず発生します。この前提に基づいて、キャッシュ侵入の理由を次のように分析します:

1. 悪意のある攻撃、キーの命名方法を推測し、キャッシュにないキーを使用してアクセスすると推定します。

2. 最初のデータ アクセスでは、キャッシュにデータがまだ存在しない場合、同時シナリオではすべてのリクエストがデータベースにプッシュされます。

3. データベース内のデータも空なので、データベースにアクセスしてもデータは取得できませんので、キャッシュ上には該当するデータが存在しないはずです。これも浸透につながる可能性があります。

3. キャッシュの侵入を解決する

キャッシュの侵入は、図に示すように、侵入の原因を段階的に回避することにあります。 #上に示したように、解決手順は次のとおりです:

Redis キャッシュの侵入を解決する方法

1. Web サーバーの起動時に、同時に頻繁にアクセスされる可能性のあるデータを事前にキャッシュに書き込みます。 -これにより、ステップ 3 での多数のリクエストのキューイングとブロックが回避されます。

  • 2. キーの命名を標準化し、キャッシュ クエリと書き込みエントリを統合します。このようにして、玄関では鍵の特定が検出される。 – このようにして、悪意のあるキーが保存され、傍受されます。

  • 3. 同期二重検出メカニズム. このとき、同期 (Synchronized) メカニズムを使用して、同期コード ブロックの前に、対応するキーがキャッシュに存在するかどうかを確認する必要があります。コード ブロックを同期します。クエリ対象のキーがキャッシュに含まれているかどうかを再度確認します。この「二重検出」の目的は、同時シナリオによって引き起こされる無意味なデータベース アクセスを回避することです (侵入を厳密に回避するためのソリューションでもあります)。

    このステップではキューが発生しますが、最初のステップで述べたように、大量のキューを回避するために、予測可能な多数のリクエストを事前にキャッシュに書き込むことができます。
  • 4. データベースにデータがあるかどうかに関係なく、対応するキーはキャッシュに保存され、値は空になります。 – これは、データベース内にこのデータが存在しないことによる、データベースへの通常のキャッシュ貫通アクセスを回避するためです。

  • 5. 手順 4 で null 値が多すぎると、メモリ不足も発生します。不必要なメモリ消費の原因となります。このように、値が空のキーは定期的にクリーニングする必要があります。メモリが悪意をもって占有されるのを防ぎます。その結果、通常の関数はデータをキャッシュできなくなります。

Redis 関連の技術記事の詳細については、Redis チュートリアル 列をご覧ください。学ぶために !

以上がRedis キャッシュの侵入を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

Redisは、データベース、キャッシュ、メッセージブローカーとして使用されるオープンソースメモリデータ構造ストレージであり、高速応答と高い並行性が必要なシナリオに適しています。 1.Redisはメモリを使用してデータを保存し、マイクロ秒の読み取り速度と書き込み速度を提供します。 2.文字列、リスト、コレクションなどのさまざまなデータ構造をサポートします。3。Redisは、RDBおよびAOFメカニズムを介してデータの持続性を実現します。 4.シングルスレッドモデルと多重化テクノロジーを使用して、リクエストを効率的に処理します。 5.パフォーマンス最適化戦略には、LRUアルゴリズムとクラスターモードが含まれます。

Redis:キャッシュ、セッション管理などRedis:キャッシュ、セッション管理などMay 01, 2025 am 12:03 AM

Redisの関数には、主にキャッシュ、セッション管理、その他の機能が含まれます。1)キャッシュ関数はメモリを介してデータを保存して読み取り速度を向上させ、eコマースWebサイトなどの高周波アクセスシナリオに適しています。 2)セッション管理関数は、分散システムでセッションデータを共有し、有効期限のあるメカニズムを通じて自動的にクレンジングします。 3)リアルタイムメッセージプッシュおよびマルチスレッドシステムおよびその他のシナリオに適した、パブリッシュサブスクライブモード、分散ロック、カウンターなどのその他の機能。

Redis:そのコア機能と利点の調査Redis:そのコア機能と利点の調査Apr 30, 2025 am 12:22 AM

Redisのコア関数には、メモリストレージと持続性メカニズムが含まれます。 1)メモリストレージは、高性能アプリケーションに適した非常に高速な読み取り速度と書き込み速度を提供します。 2)永続性は、RDBとAOFによってデータが失われないことを保証し、選択はアプリケーションのニーズに基づいています。

Redisのサーバー側操作:提供するものRedisのサーバー側操作:提供するものApr 29, 2025 am 12:21 AM

redis'sserver-sideoperations offferidions and forexuctingcomplexoperationsontheserver.1)機能を調整することで、javascript、orredis'sscriptinglanguage、infulancingscalabilityandmantenmention

Redis:データベースまたはサーバー?役割を分かりやすいRedis:データベースまたはサーバー?役割を分かりやすいApr 28, 2025 am 12:06 AM

redisisbothadatabaseandaserver.1)asadatabase、itusesin memorystorage forfastaccess、理想的なforreal-timeapplicationsandcaching.2)asaserver、itupportspub/submessagingandaging andluascriptingforreal-communicationandserver-sideoperation。

Redis:NOSQLアプローチの利点Redis:NOSQLアプローチの利点Apr 27, 2025 am 12:09 AM

Redisは、高性能と柔軟性を提供するNOSQLデータベースです。 1)大規模データと高い並行性の処理に適したキー価値ペアを介してデータを保存します。 2)メモリストレージとシングルスレッドモデルは、速い読み取りと書き込みと原子性を確保します。 3)RDBおよびAOFメカニズムを使用してデータを持続し、高可用性とスケールアウトをサポートします。

Redis:そのアーキテクチャと目的を理解するRedis:そのアーキテクチャと目的を理解するApr 26, 2025 am 12:11 AM

Redisは、主にデータベース、キャッシュ、メッセージブローカーとして使用されるメモリデータ構造ストレージシステムです。そのコア機能には、シングルスレッドモデル、I/O多重化、持続メカニズム、複製、クラスタリング機能が含まれます。 Redisは、キャッシュ、セッションストレージ、メッセージキューのための実際のアプリケーションで一般的に使用されます。適切なデータ構造を選択し、パイプラインとトランザクションを使用し、監視とチューニングを使用することにより、パフォーマンスを大幅に改善できます。

Redis vs. SQLデータベース:重要な違​​いRedis vs. SQLデータベース:重要な違​​いApr 25, 2025 am 12:02 AM

RedisデータベースとSQLデータベースの主な違いは、Redisが高性能および柔軟性要件に適したインメモリデータベースであることです。 SQLデータベースは、複雑なクエリとデータの一貫性要件に適したリレーショナルデータベースです。具体的には、1)Redisは高速データアクセスとキャッシュサービスを提供し、キャッシュおよびリアルタイムのデータ処理に適した複数のデータ型をサポートします。 2)SQLデータベースは、テーブル構造を介してデータを管理し、複雑なクエリとトランザクション処理をサポートし、データの一貫性を必要とするeコマースや金融システムなどのシナリオに適しています。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

DVWA

DVWA

Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。