ホームページ  >  記事  >  データベース  >  Redis マルチレベルキャッシュの概要

Redis マルチレベルキャッシュの概要

尚
転載
2020-05-02 09:07:543034ブラウズ

Redis マルチレベルキャッシュの概要

粗い粒度から細かい粒度まで:

製品詳細ページを例として取り上げます

1. ページ レベルのキャッシュ

(URL レベル キャッシュとも呼ばれます。ページは手動でレンダリングされ、redis (key=製品 ID、val="製品詳細ページ) に保存されます。今後このページが再度リクエストされると、redis から取得されます。 text/html をフロントエンドに直接返し、ページをローカルにキャッシュするようにブラウザに指示できます。欠点は、ページ データが時間内に更新されないことです)

2. オブジェクト レベルのキャッシュ

(商品データなど、(key=商品id, val="データベース「商品データの検索」))は、一度問い合わせた商品情報をredisに保存します。2回目の商品データの変更依頼時、redis が最初にクエリに使用されます)

redis キャッシュの考え方:

1. まず、redis にデータがあるかどうかを確認します

1.1.存在する場合は

1.2 を返します。存在しない場合はデータベースにクエリを実行し、redis に保存してから

2 を返します。キャッシュに注意してください。ライフ サイクル、

Ifこのサイクルは永続的であり、redis は簡単に崩壊しますが、それは時間の問題です。

フラッシュ セールでの redis の使用:

1. まずフラッシュを強制終了します。製品在庫は、事前に保存されています。 redis

2. フラッシュ セールが開始されると、redis で在庫が事前に減らされて 0 になります。製品のフラッシュ セールは終了します (redis はシングルスレッドです)

3. If in Redis のアクセス圧力を軽減するために、ユーザーが送信したフラッシュ セール リクエストを mq (RabbitMq など) に配置できます。

たとえば、製品は合計で 10 個しかなく、合計100,000 人のユーザーが注目しており、すべてのユーザーがほぼ同時にフラッシュ セール リクエストを送信しています。

3.1. リクエストをメッセージ キューに入れ、「キューイング」としてフロント エンドに返すことができます。

3.2. コンシューマ (キューの「コンシューマ」) は、固定速度でメッセージ キューから読み取ります データを取得し、データベースへの注文を作成します (つまり、影響を与えずに 10 個の注文を順序立てて作成します)

3.3. 上位 10 位にランクインしているユーザーがいる可能性もありますが、何らかの理由で注文の作成に失敗した場合、ユーザーのフラッシュ セール リクエストは mq の最後に配置されます。その後、キュー内の他のユーザーの注文が作成されます

3.4. 成功した注文リクエストを作成し、そのリクエストを mq から削除して、ユーザーにテキスト メッセージを送信します。「おめでとうございます。フラッシュ セールは成功しました!」

3.5. 10 件の注文の作成に成功した後 (つまり、フラッシュ セールが終了した後)、キュー内の他のユーザーに「2 番目の販売に失敗しました」を返すように要求します。

Redis の詳細については、次の点に注意してください。 redis 入門チュートリアル コラム.

以上がRedis マルチレベルキャッシュの概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。