検索
ホームページデータベースRedisRedis におけるキャッシュの侵入、キャッシュなだれ、キャッシュのブレークダウン、キャッシュの一貫性について話しましょう。

この記事では、Redis におけるキャッシュペネトレーション、キャッシュアバランシェ、キャッシュブレークダウン、キャッシュ一貫性について簡単に理解し、キャッシュペネトレーションとキャッシュアバランチの解決策を紹介します。

Redis におけるキャッシュの侵入、キャッシュなだれ、キャッシュのブレークダウン、キャッシュの一貫性について話しましょう。

キャッシュ雪崩

キャッシュは広い領域で同時に障害が発生し、後続のリクエストがデータベースに降りかかり、データベースが使用できなくなります。

たとえば、電子商取引のホームページでは、すべてのホームページの主要な有効期限は 12 時間で、正午に更新されます。 0:00のフラッシュセールイベントで大量のユーザーが殺到しますが、その時点でキャッシュ内のすべてのキーが無効であるため、すべてのリクエストがデータベースに落ち、データベースが処理できなければクラッシュするだけです。または、redis がダウンしている場合、大量のリクエストが mysql に送信され、mysql がハングアップします。 [関連する推奨事項: Redis ビデオ チュートリアル ]

解決策

  • したがって、この場合、各キーの有効期限を追加する必要があります。ランダム値同時に多数のキー障害が発生するのを避けるため、Redis クラスターのデプロイメントの場合、ホットスポット データを異なるライブラリに分散できます。

  • #事前に: Redis クラスターの高可用性を確保し、マシンのダウンタイムをできるだけ早く補い、適切なメモリ削減戦略を選択するようにしてください。

  • 進行中: mysql クラッシュを回避するためのローカル ehcache キャッシュ hystrix の現在の制限とダウングレード

  • その後: Redis 永続化メカニズムによって保存されたデータは、できるだけ早くキャッ​​シュに復元されます。

キャッシュ侵入

要求されたキーの多くがキャッシュに存在しません。たとえば、ハッカーがキャッシュに存在しないキーを作成し、攻撃を開始します。大量のリクエストが発生し、その結果、大量のリクエストがデータベースにドロップされます。

解決策

  • まず、基本的な入力パラメータの検証を実行し、不正なパラメータを直接インターセプトする必要があります。たとえば、データベース ID を 0 未満にすることはできないというクエリを実行し、検証します。電子メール アドレス 形式など

  • #キャッシュにもデータベースにも特定のキーのデータが見つからない場合は、キーを Redis に書き込み、値は null になり、有効期限を設定します次のリクエストを回避する時間になり、データベースに落ちます。
  • ブルーム フィルターを介して、ブルーム フィルターは、大量のデータの中に特定のデータが存在するかどうかを非常に簡単に判断できます。リクエストが来たときに、考えられるすべてのリクエスト値をブルーム フィルターに保存できます。では、まずユーザーから送信されたリクエストがブルーム フィルターに存在するかどうかを判断し、存在しない場合は直接インターセプトします。
  • キャッシュ ブレークダウン

キャッシュ ブレークダウンとは、常に大規模な同時実行を実行するキーの非常にホット スポットを指し、大規模な同時実行がこのポイントへのアクセスに集中します。キーの有効期限が切れると、継続的に大規模な同時実行がキャッシュを突破し、データベースに直接要求します。

キャッシュの一貫性

強い一貫性が必要な場合、強い一貫性が保証されていないため、キャッシュは使用できません。最終的な一貫性のみが保証されます。

最初にキャッシュを削除してからデータベースを更新します
  • データベースの更新が失敗した場合、データベースには古いデータが残っており、redis は空であり、データは保存されません。空のデータを読み取ると、データベースに移動してクエリが実行され、キャッシュが更新されます。

キューに参加してシリアル化操作を実行します
  • 最初にキャッシュを削除してから、データベースを更新します。キャッシュの削除など、同時実行性の高いシナリオでも問題が発生する可能性があります。データベースはまだ更新されていません。別のスレッドが入ってきて、redis が空であることがわかります。データベースを読み取り、redis を更新します。このとき、キャッシュされたスレッドが削除され、データベースが更新されます。これにより、次のような問題が発生します。このとき、データの更新操作をキューに入れるとシリアル化操作は発生しなくなりますが、これは効率が低下するため、通常はお勧めできません。

プログラミング関連の知識について詳しくは、

プログラミング入門

をご覧ください。 !

以上がRedis におけるキャッシュの侵入、キャッシュなだれ、キャッシュのブレークダウン、キャッシュの一貫性について話しましょう。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事は掘金社区で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
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コマースや金融システムなどのシナリオに適しています。

Redis:データストアとサービスとしてどのように機能するかRedis:データストアとサービスとしてどのように機能するかApr 24, 2025 am 12:08 AM

redisactsassassadatastoreandaservice.1)asadatastore、itusesin memorystorage for fastorations、supporting variousdatastructureSlike-key-valuepairsandsortedsets.2)asaservice、iteasruascruascriptingrupting criptingforceptingpurplecomplecomplecprexoperations

Redis vs.その他のデータベース:比較分析Redis vs.その他のデータベース:比較分析Apr 23, 2025 am 12:16 AM

他のデータベースと比較して、Redisには次の独自の利点があります。1)非常に速い速度、および読み取り操作は通常、マイクロ秒レベルにあります。 2)豊富なデータ構造と操作をサポートします。 3)キャッシュ、カウンター、公開サブスクリプションなどの柔軟な使用シナリオ。 Redisまたはその他のデータベースを選択する場合、特定のニーズとシナリオに依存します。 Redisは、高性能および低遅延のアプリケーションでうまく機能します。

Redisの役割:データストレージと管理機能の調査Redisの役割:データストレージと管理機能の調査Apr 22, 2025 am 12:10 AM

Redisは、データストレージと管理において重要な役割を果たしており、複数のデータ構造と持続性メカニズムを通じて最新のアプリケーションの中核となっています。 1)Redisは、文字列、リスト、コレクション、注文されたコレクション、ハッシュテーブルなどのデータ構造をサポートし、キャッシュや複雑なビジネスロジックに適しています。 2)RDBとAOFの2つの持続方法を通じて、Redisは信頼できるストレージとデータの迅速な回復を保証します。

Redis:NOSQLの概念の理解Redis:NOSQLの概念の理解Apr 21, 2025 am 12:04 AM

Redisは、大規模なデータの効率的なストレージとアクセスに適したNOSQLデータベースです。 1.Redisは、複数のデータ構造をサポートするオープンソースメモリデータ構造ストレージシステムです。 2.キャッシュ、セッション管理などに適した、非常に速い読み取り速度と書き込み速度を提供します。 4.使用例には、基本的なキー値ペア操作と高度なコレクション重複排除関数が含まれます。 5.一般的なエラーには、接続の問題、データ型の不一致、メモリオーバーフローが含まれるため、デバッグに注意する必要があります。 6.パフォーマンス最適化の提案には、適切なデータ構造の選択とメモリ排除戦略の設定が含まれます。

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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません