Redis の使用シナリオは何ですか?

WJ
リリース: 2020-06-05 16:23:03
オリジナル
2254 人が閲覧しました

Redis の使用シナリオは何ですか?

1: キャッシュ - ホット データ

ホット データ (頻繁にクエリされるが、頻繁に変更または削除されないデータ)、最初の選択肢は次のとおりです。 Redis キャッシュを使用します. 結局のところ、強力なバブリング QPS と非常に強力な安定性は、同様のツールでは利用できません. memcached と比較して、使用できる豊富なデータ型も提供します. さらに、メモリ内のデータも提供されます. AOF や RDB などの永続化メカニズムを、コールド、ホット、またはホットとコールドのいずれかから選択できます。

特定のアプリケーションに基づいて注意する必要があります: 多くの人は Spring の AOP を使用して、redis キャッシュの自動生成とクリアを構築します。プロセスは次のようになります:

データベースの前に [Query redis] を選択します。必要に応じて redis を使用します。 データ、データベースの選択を中止します。そうでない場合は、データベースを選択し、データを redis に挿入します。

データベースを更新または削除します。redis にクエリを実行して、データが存在するかどうかを確認します。存在する場合は、データが存在するかどうかを確認します。 , まずredis内のデータを削除してからデータベースを更新または削除してください。

のデータは同時実行量が非常に少ない場合は基本的に上記の操作で問題ありませんが、同時実行量が多い場合は有料となります。次のシナリオに注意してください:

更新するために redis を削除します この時点で、別のスレッドがクエリを実行し、それが redis にないことがわかり、すぐにクエリ SQL を実行し、データをredis. 先ほどの更新ステートメントに戻りますが、この惨めなスレッドは今いまいましい選択を知りませんでした。スレッドは大きな間違いを犯しました!したがって、redis 内の誤ったデータは、次の更新または削除まで永久に存在します。

2: Counter

クリック数のカウントなどのアプリケーション。シングルスレッドのため、同時実行の問題が回避され、エラーのないことが保証され、100% ミリ秒のパフォーマンスが保証されます。いいね。

コマンド: INCRBY

もちろんこれで完了です。永続性を忘れないでください。結局のところ、redis はメモリのみを保存します。

3: Queue

はメッセージング システムに相当し、ActiveMQ、RocketMQ などのツールも同様ですが、個人的には単純に使用しても問題ないと考えています。データの一貫性要件が高い場合は、RocketMQ などの専門的なシステムを使用してください。

redis はキューに追加された要素の数を返すことによってキューにデータを追加するため、このビジネスにアクセスしているユーザーの数を判断するために使用できます。同時リクエストをシリアルに変更し、キューやスタックとしても使用可能

4: ビット演算 (ビッグデータ処理)

数億のシナリオで使用大量のデータ (たとえば、数億人のユーザーのシステム チェックイン、重複ログイン数の統計、ユーザーがオンラインかどうかなど)。

Tencent の 10 億人のユーザーについて考えてみましょう。ユーザーがオンラインであるかどうかを数ミリ秒以内に確認する必要があります。何ができるでしょうか?ユーザーごとにキーを作成して、それを 1 つずつ記録するなどとは言わないでください (必要なメモリは計算できますが、これは恐ろしいことになります。同様のニーズはたくさんあります。テンセントはこれだけのためにどれだけの費用をかけることになるでしょう...) 。ここでは、インプレース操作を使用する必要があります。setbit、getbit、bitcount コマンドを使用します。

原理:

Redis で十分な長さの配列を構築します。各配列要素は 0 と 1 の 2 つの値のみを持つことができ、この配列の添え字インデックスが使用されます。上記の例のユーザー ID (数値である必要があります) を表すと、数億の長さのこの大きな配列が添字と要素値 (0 と 1) を通じてメモリ システムを構築できることは明らかです。 ). 上で述べたシナリオも実現できます。使用されるコマンドは次のとおりです: setbit、getbit、bitcount Expanded) 、redis を通じてフィルタリングできます: 各リクエストは、リクエスト IP、パラメータ、インターフェイス、およびその他のハッシュをキーとして使用して redis に保存し (冪等リクエスト)、有効期間を設定してから、redis で次のリクエストを検索します。一定期間内に繰り返し送信されたかどうかを確認するために使用されます。

フラッシュ キル システムは、データベースの「爆発」を防ぐために Redis のシングルスレッド機能に基づいています。

グローバル インクリメンタル「フラッシュセール」と同様のID生成

#6: 最新リスト

例:ニュース一覧ページの最新ニュース一覧。総数が大きい場合, select a from A 制限は使用しないようにしてください 10. この種の低品質の商品の場合は、redis の LPUSH コマンドを試してリストを作成し、順番に 1 つずつ挿入してください。しかし、記憶が消去されたらどうなるでしょうか?これも簡単で、ストレージ キーをクエリできない場合は、mysql を使用してクエリを実行し、リストを Redis に初期化するだけです。

上記は、Redis の使用シナリオの全体的な紹介です。

関連資料:Redis チュートリアル

以上がRedis の使用シナリオは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:51dev.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!