Redis に基づくデータのキャッシュに関する一般的な問題を解決する方法
1. キャッシュの侵入
1.1 問題の説明
キャッシュの侵入は、クライアント/ブラウザ側に存在しないキーを要求することです。このキーは Redis に存在しません。データベース内のデータ ソース。このキーのリクエストをキャッシュから取得できないたびに、データ ソースがリクエストされます。
存在しないユーザー ID を使用してユーザー情報にアクセスすると、その情報は Redis にもデータベースにもありません。複数のリクエストによりデータ ソースが過負荷になる可能性があります。
# #1.2 解決策
キャッシュ内に存在してはならず、クエリできないデータです。キャッシュはミスがあると受動的に書き込まれるため、キャッシュは存在しません。フォールト トレランスを考慮すると、キャッシュに存在するデータは存在しません。 redis でキャッシュすると、存在しないデータが要求されるたびにデータベースが要求されるため、キャッシュの意味が失われます。
(1) クエリによって返されたデータが空の場合 (データが存在するかどうかに関係なく)、空の結果 (null) をキャッシュし、空の結果の有効期限を次のように設定します。非常に短く、最長で 5 分以内
(2) アクセシブル リスト (ホワイトリスト) を設定します。ビットマップ タイプを使用してアクセシブル リストを定義します。リスト ID はビットマップのオフセットとして使用されます。各アクセスとビットマップ内の ID を比較し、アクセス ID がビットマップにない場合は、インターセプトしてアクセスを禁止します。
(3) ブルームフィルターを利用する
(4) リアルタイムデータ監視を実施し、Redisのヒット率が急激に低下した場合にアクセスオブジェクトとアクセスデータを確認し、設定を行うブラックリスト。
2. キャッシュの内訳
2.1 問題の説明
ユーザーが既存のキーのデータをリクエストすると、redis 内のキーのデータが古くなります。の同時リクエストでキャッシュの有効期限が切れていることが判明すると、データ ソースはデータのロードを要求され、redis にキャッシュされます。このとき、多数の同時リクエストによりデータベース サービスが圧倒される可能性があります。
2.2 解決策
特定のキーのデータが大量に要求される場合、このキーはホット データであるため、「故障」問題を回避するために考慮する必要があります。
(1) 事前に設定された人気のあるデータ: redis のアクセスがピークになる前に、事前にいくつかの人気のあるデータを redis に保存し、これらの人気のあるデータキーの期間を長くします
(2) リアルタイム調整 : どのデータが人気があるかをオンサイトで監視し、キーの有効期限の長さをリアルタイムに調整します
(3) ロックの使用:
はキャッシュの有効期限が切れたときです (データベースをすぐにロードするのではなく、取り出した値が空であると判断されます。
まず、成功した操作の戻り値を持つキャッシュ ツールのいくつかの操作 (Redis の SETNX など) を使用して、ミューテックス キーを設定します。
いつ操作が正常に返された場合は、load db 操作を再度実行し、キャッシュを復元し、最後にミューテックス キーを削除します。
操作が失敗を返した場合は、スレッドのロードがあることが証明されます。 db を実行すると、現在のスレッドはしばらくスリープ状態になります。get Cache メソッド全体を再試行する時間です。
3. キャッシュ雪崩
3.1 問題の説明
対応するデータは存在しますが、キー データが存在しません。期限切れ (Redis キャッシュの有効期限が切れ、このキーは自動的に削除されます)。この時点では、多数の同時リクエストが異なるキーにアクセスします。つまり、多数の異なるキーが同時にアクセスされます。キーが有効期限に達し、データベースが要求される 大量の同時リクエスト データベース サーバーに負荷がかかる この状況をキャッシュ雪崩と呼びます キャッシュの故障との違いは、前者がキーであることです。
3.2 解決策
キャッシュに障害が発生した場合の雪崩現象は、基盤となるシステムに重大な影響を与えます。
(1) マルチレベル キャッシュ アーキテクチャの構築:
-
nginx キャッシュ redis キャッシュ 他のキャッシュ (ehcache など)
(2) ロックまたはキューを使用する:
- #ロックまたはキューを使用して、大量のロックが発生しないようにします。データベースに同時にアクセスするスレッド 障害が発生した場合に、基盤となるストレージ システムに大量の同時リクエストが発生するのを避けるために、読み取りと書き込みが継続的に実行されます。同時実行性が高い状況には適用されません。
(3) キャッシュを更新するために有効期限フラグを設定します。
- かどうかを記録します。キャッシュされたデータの有効期限が切れた場合 (事前量を設定)、有効期限が切れると、別のスレッドへの通知がトリガーされ、実際のキーのキャッシュがバックグラウンドで更新されます。
(4) キャッシュの有効期限を分散します:
- たとえば、元の有効期限に基づいて次のようにすることができます。ランダムな 1 ~ 5 分などのランダムな値を追加すると、各キャッシュの有効期限の繰り返し率が減少し、集合的な障害イベントが発生しにくくなります。
以上がRedis に基づくデータのキャッシュに関する一般的な問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

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

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Redisクラスターモードは、シャードを介してRedisインスタンスを複数のサーバーに展開し、スケーラビリティと可用性を向上させます。構造の手順は次のとおりです。異なるポートで奇妙なRedisインスタンスを作成します。 3つのセンチネルインスタンスを作成し、Redisインスタンスを監視し、フェールオーバーを監視します。 Sentinel構成ファイルを構成し、Redisインスタンス情報とフェールオーバー設定の監視を追加します。 Redisインスタンス構成ファイルを構成し、クラスターモードを有効にし、クラスター情報ファイルパスを指定します。各Redisインスタンスの情報を含むnodes.confファイルを作成します。クラスターを起動し、CREATEコマンドを実行してクラスターを作成し、レプリカの数を指定します。クラスターにログインしてクラスター情報コマンドを実行して、クラスターステータスを確認します。作る

Redisはハッシュテーブルを使用してデータを保存し、文字列、リスト、ハッシュテーブル、コレクション、注文コレクションなどのデータ構造をサポートします。 Redisは、スナップショット(RDB)を介してデータを維持し、書き込み専用(AOF)メカニズムを追加します。 Redisは、マスタースレーブレプリケーションを使用して、データの可用性を向上させます。 Redisは、シングルスレッドイベントループを使用して接続とコマンドを処理して、データの原子性と一貫性を確保します。 Redisは、キーの有効期限を設定し、怠zyな削除メカニズムを使用して有効期限キーを削除します。

Redis-Serverが見つからない問題を解決するための手順:インストールを確認して、Redisが正しくインストールされていることを確認します。環境変数Redis_hostとredis_portを設定します。 Redis Server Redis-Serverを起動します。サーバーがRedis-Cli pingを実行しているかどうかを確認します。

Redis Clusterは、Redisインスタンスの水平拡張を可能にする分散展開モデルであり、ノード間通信、ハッシュスロット部門キースペース、ノード選挙、マスター奴隷レプリケーション、コマンドリダイレクトを通じて実装されます。ハッシュスロット:キースペースをハッシュスロットに分割して、キーの責任ノードを決定します。ノード選挙:少なくとも3つのマスターノードが必要であり、選挙メカニズムを通じて1つのアクティブマスターノードのみが保証されます。マスタースレーブレプリケーション:マスターノードはリクエストの書き込みを担当し、スレーブノードはリクエストとデータレプリケーションを読む責任があります。コマンドリダイレクト:クライアントはキーを担当するノードに接続し、ノードは誤ったリクエストをリダイレクトします。トラブルシューティング:障害検出、オフラインのマーク、および再

Redisバージョン番号を表示するには、次の3つの方法を使用できます。(1)情報コマンドを入力し、(2) - versionオプションでサーバーを起動し、(3)構成ファイルを表示します。

Redis Orderedセット(ZSET)は、並べ替えられた要素を保存し、関連するスコアでソートするために使用されます。 zsetを使用する手順には次のものがあります。1。zsetを作成します。 2。メンバーを追加します。 3.メンバースコアを取得します。 4。ランキングを取得します。 5.ランキング範囲のメンバーを取得します。 6.メンバーを削除します。 7.要素の数を取得します。 8。スコア範囲のメンバーの数を取得します。

Redisは、キーの一意性を確保するために5つの戦略を使用します。1。名前空間分離。 2。ハッシュデータ構造。 3.データ構造を設定します。 4。文字列キーの特殊文字。 5。LUAスクリプト検証。特定の戦略の選択は、データ組織、パフォーマンス、およびスケーラビリティ要件に依存します。

Redisのすべてのキーを表示するには、3つの方法があります。キーコマンドを使用して、指定されたパターンに一致するすべてのキーを返します。スキャンコマンドを使用してキーを繰り返し、キーのセットを返します。情報コマンドを使用して、キーの総数を取得します。
