ホームページ  >  記事  >  データベース  >  Redis は一般的にどこで使用されますか?

Redis は一般的にどこで使用されますか?

(*-*)浩
(*-*)浩オリジナル
2019-06-05 17:36:039811ブラウズ

Redis アプリケーション シナリオの概要。私たちは通常、多くの場所で Redis を使用します。私たちが理解しているアプリケーション シナリオの概要は次のとおりです:

Redis は一般的にどこで使用されますか?

1 . ホットスポット データのキャッシュ

Redis はアクセス速度が速く、豊富なデータ型をサポートしているため、Redis はホットスポット データの保存に非常に適しています。キャッシュ更新操作、この関数は最も一般的であり、ほぼすべてのプロジェクトで使用されています。

2. 期間限定ビジネスのアプリケーション (推奨学習: Redis ビデオ チュートリアル )

expired コマンドを使用して生存期間を設定できます。 redis のキーの時間、redis は時間が経過するとキーを削除します。この機能は、期間限定のプロモーション情報や携帯電話の認証コードなどのビジネスシーンで使用できます。

3. カウンタに関する問題

incrby コマンドはアトミックなインクリメントを実現できるため、Redis は同時実行性の高いフラッシュ セールス活動や分散シーケンス番号生成に使用できます。 , 特定のサービスは、たとえば、携帯電話番号によって送信されるテキスト メッセージの数の制限、インターフェイスの 1 分あたりのリクエスト数の制限、インターフェイスの 1 日あたりの通話数の制限などにも反映されます。

4. ランキングに関する問題

ランキングにおけるリレーショナル データベースのクエリ速度は一般に遅いため、redis の SortedSet を使用してホット データを並べ替えることができます。

ミルクティーアクティビティでは、部門ごとのいいね数ランキングを表示する必要があるため、部門ごとにSortedSetを作成し、ユーザーのopenidを上記のユーザー名として使用し、ユーザーのいいね数を使用しました。上記のスコアはユーザーごとにハッシュが作成され、zrangebyscoreを通じていいね数に応じてランキングが取得され、ユーザー名に応じてユーザーのハッシュ情報が取得されます。その時の実際のアプリケーションでは。

5. 分散ロック

これは主に redis の setnx コマンドを使用して実行されます。キャッシュは正常に設定され、同時に返されます。1、それ以外の場合は 0 が返されます。この機能は Yunibenyuanfang のバックグラウンドで使用されます。サーバーはクラスター化されているため、スケジュールされたタスクは両方のマシンで実行される可能性があるため、スケジュールされたタスクでは、最初に setnx を通じてロックを設定します。設定が成功した場合は実行されます。設定が成功しなかった場合は、スケジュールされたタスクが実行されたことを意味します。もちろん、特定のビジネスに基づいて、このロックに有効期限を追加できます。たとえば、スケジュールされたタスクが 30 分ごとに実行される場合、有効期限を 30 分未満の時間に設定できます。スケジュールされたタスクの期間とスケジュールされたタスクの実行時間の消費に関連します。

もちろん、この機能は分散ロックを必要とする他のシナリオにも適用でき、有効期限と組み合わせることで、主にデッドロックの発生を防ぐことができます。

6. 遅延操作

これまでに関連するテストを行ってきましたが、実際のプロジェクトには適用されていません。この機能のシーン。例えば、受注生産後、在庫を確保し、10分後にユーザーが実際に購入したかどうかを確認し、購入がなければ書類を無効とし、同時に在庫を復元します。 。 Redis はバージョン 2.8.0 以降、キースペース通知機能を提供しているため、顧客は Redis データ セットに何らかの影響を与えるイベントを受信するために Pub/Sub チャネルにサブスクライブすることができます。したがって、上記のニーズに対して次のソリューションを使用できます。本番を注文するときに、キーを設定し、10 分後に期限切れになるように設定します。バックグラウンドでリスナーを実装して、キーの有効性を監視します。キーの有効期限が切れたら、フォローアップします。ロジックを追加しました。もちろん、この要件を達成するために、rabbitmq や activemq などのメッセージ ミドルウェアの遅延キュー サービスを使用することもできます。

7. ページング、あいまい検索

redis のセット コレクションは zrangebylex メソッドを提供し、構文は次のとおりです:

ZRANGEBYLEX key min max [LIMIT オフセット カウント]

ページ データ クエリは、ZRANGEBYLEX zset - LIMIT 0 10 を通じて実行できます。ここで - はすべてのデータを取得することを意味します

zrangebylex key min max これにより、辞書内のデータを返すことができますこの機能は、保存されたコンテンツに対するファジー クエリをサポートする Redis で私が見つけた唯一の機能でもあります。

数日前、この機能を使用して学校データのシミュレーション テストを実施しました。学校データは約 600,000 件あり、応答時間は約 700ms で、mysql のようなクエリよりわずかに高速ですが、大量のデータベース IO 操作を回避できるため、全体的には直接 mysql クエリよりもシステム パフォーマンスの保証に役立ちます。

8.いいねや友達などの相互関係の保存

Redis set が提供する外部関数は list の関数と似ています。特別なことは、set が重複を自動的に削除できることです。データのリストを保存する必要があり、重複データが表示されたくない場合、set は非常に便利です。良い選択であり、セットは、メンバーがセット コレクションに含まれているかどうかを判断するための重要なインターフェイスを提供しますが、リストでは提供できません。また、Weibo アプリでは、各ユーザーがフォローしている人物がコレクションとして存在するため、2 人の共通の友達を見つける機能を簡単に実装できます。

これはミルクティーアクティビティで使用されており、setを使ってユーザー間のいいね関係を保存し、また、sismemberメソッドを使用して、いいねを以前に受け取ったかどうかを判断します。このインターフェースの応答時間は 10 ミリ秒以内に制御されており、非常に効率的です。

9. キュー

redis にはリストプッシュやリストポップなどのコマンドがあるので、キュー操作を簡単に行うことができます。

Redis 関連の技術記事の詳細については、「Redis データベース チュートリアルの使用方法の概要」 列にアクセスして学習してください。

以上がRedis は一般的にどこで使用されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。