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

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

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

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

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

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

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

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

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


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

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

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

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

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









