Redis は、ANSI C 言語で書かれたオープンソースのログタイプの Key-Value データベースで、ネットワークをサポートし、メモリベースで永続化でき、複数の言語で API を提供します。
Redis には多くのアプリケーション シナリオがあります。これは 7 つのアプリケーション シナリオの簡単なリストです:
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: ビット演算 (ビッグデータ処理)数億のシナリオで使用大量のデータ (たとえば、数億人のユーザーのシステム チェックイン、重複ログイン数の統計、ユーザーがオンラインかどうかなど)。
原理:
Redis で十分な長さの配列を構築します。各配列要素は 0 と 1 の 2 つの値のみを持つことができ、この配列の添え字インデックスが使用されます。上記の例のユーザー ID (数値である必要があります) を表すと、数億の長さのこの大きな配列が添字と要素値 (0 と 1) を通じてメモリ システムを構築できることは明らかです。 ). 上で述べたシナリオも実現できます。使用されるコマンドは次のとおりです: setbit、getbit、bitcount Expanded) 、redis を通じてフィルタリングできます: 各リクエストは、リクエスト IP、パラメータ、インターフェイス、およびその他のハッシュをキーとして使用して redis に保存し (冪等リクエスト)、有効期間を設定してから、redis で次のリクエストを検索します。一定期間内に繰り返し送信されたかどうかを確認するために使用されます。
フラッシュ キル システムは、データベースの「爆発」を防ぐために Redis のシングルスレッド機能に基づいています
グローバル増分 ID 生成 (「フラッシュ セール」と同様)
6: 最新リストたとえば、ニュースの最新ニュース リストリストページで合計数が多い場合は、select a from A limit 10 などの安っぽいものは使用せず、redis の LPUSH コマンドを使用してリストを構築し、順番に 1 つずつ挿入してください。しかし、記憶が消去されたらどうなるでしょうか?これも簡単で、ストレージ キーをクエリできない場合は、mysql を使用してクエリを実行し、リストを Redis に初期化するだけです。
7: ランキング
スコアが高い人が上位にランクされます。コマンド: ZADD (続編、ソートセット付き)
以上がRedis はどのようなアプリケーション シナリオに適していますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。