Redisデータ構造の利用シナリオの紹介

王林
リリース: 2021-03-09 09:09:43
転載
2258 人が閲覧しました

Redisデータ構造の利用シナリオの紹介

redis データベースには、文字列-文字列、ハッシュ-辞書、リスト-リスト、セット-セット、およびソートされたセット-順序セットの 5 つのデータ構造があります。

これら 5 つのデータ構造にはさまざまな使用シナリオがありますので、以下にその使用シナリオを紹介します。

1. String

String データ構造は単純な Key-Value 型で、値は String だけでなく数値も可能です (数値型が Long で表現できる場合、エンコーディングはは整数型です。その他は文字列として sdshdr に保存されます)。 String 型を使用すると、Memcached の現在の機能を完全に実現し、より効率的にすることができます。 Redisのスケジュール永続化(RDBモードまたはAOFモードを選択可能)、操作ログ、レプリケーションなどの機能もお楽しみいただけます。 Memcached と同じ get、set、incr、decr およびその他の操作を提供することに加えて、redis は次の操作も提供します:

1.LEN niushuai:O(1)获取字符串长度
2.APPEND niushuai redis:往字符串 append 内容,而且采用智能分配内存(每次2倍)
3.设置和获取字符串的某一段内容
4.设置及获取字符串的某一位(bit)
5.批量设置一系列字符串的内容
6.原子计数器
7.GETSET 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用
ログイン後にコピー

2、Hash

Memcached では、多くの場合、次の操作が使用されます。構造化情報は HashMap にパッケージ化され、クライアント上でシリアル化され、ユーザーのニックネーム、年齢、性別などの文字列値 (通常は JSON 形式) として保存されます。このとき、いずれかの項目を変更する必要がある場合、通常は文字列(JSON)を取り出してデシリアライズし、特定の項目の値を変更してから文字列(JSON)にシリアル化して保存する必要があります。それを戻します。非常に多くのことを行うために単に属性を変更するのは非常にコストがかかるはずであり、同時操作が可能な一部の状況には適していません (たとえば、2 つの同時操作で経過時間を変更する必要があるなど)。 Redis のハッシュ構造を使用すると、データベース内の属性を更新するのと同じように、特定の属性値のみを変更できます。 (ユーザー属性の保存、読み取り、および変更)

3. List

List は単なるリンク リストです (Redis は List を実装するために両端リンク リストを使用します)。データ構造の知識を学習しました。その構造を理解する必要があります。 List構造を利用することで、最新ニュースランキング(新浪ブログのタイムラインなど)などの機能を簡単に実装できます。 List のもう 1 つのアプリケーションはメッセージ キューです。List の Push 操作を使用してタスクを List に保存し、ワーカー スレッドが PoP 操作を使用してタスクを実行用に取り出します。 Redis は、リスト内の要素の特定のセグメントを操作するための API も提供しており、リスト内の要素の特定のセグメントを直接クエリして削除できます。

(学習ビデオ共有: redis データベース チュートリアル)

4. Set

Set はセットです。セットの概念は、ユニークな値、その組み合わせ。一部の集合データは、Redis が提供する Set データ構造を使用して保存できます。たとえば、Weibo アプリケーションでは、ユーザーのすべてのフォロワーをコレクションに保存したり、すべてのファンをコレクションに保存したりできます。 Redis は非常にユーザーフレンドリーであり、コレクションに対して交差、結合、差分などの操作を提供するため、共通の注意、共通の好み、2 次友人などの機能を実装すると非常に便利です。さまざまなコマンドを使用して、結果をクライアントに返すか、新しいコレクションに保存するかを選択することもできます。

1.共同好友、二度好友
2.利用唯一性,可以统计访问网站的所有独立 IP
3.好友推荐的时候,根据 tag 求交集,大于某个 threshold 就可以推荐
ログイン後にコピー

5. ソート セット

セットと比較すると、ソート セットはセット内の要素に重みパラメータ スコアを追加するため、セット内の要素を次の順序に従って配置できます。たとえば、クラス全体の成績を保存するソート セットでは、設定値を学生 ID 番号、スコアをテストのスコアにすることができます。このようにして、データを設定されている場合、自然な並べ替えはすでに実行されています。さらに、ソート セットを使用して重み付けされたキューを作成することもできます。たとえば、通常のメッセージのスコアは 1、重要なメッセージのスコアは 2 です。その後、ワーカー スレッドはソートの逆の順序を選択して作業を取得できます。タスク。重要なタスクに優先順位を付けます。

2. その他の redis 機能の利用シナリオ

1. サブスクリプション公開システム

Pub/Sub とは文字通り、パブリッシュ (Publish) とサブスクリプション (Subscribe) を意味します。特定のキー値に対してメッセージの公開とメッセージのサブスクリプションを設定できます。メッセージがキー値に基づいて公開されると、そのメッセージをサブスクライブするすべてのクライアントが対応するメッセージを受信します。この機能の最もわかりやすい用途は、リアルタイム メッセージング システムとしての使用です。

2. トランザクション

NoSql がトランザクションをサポートしないと誰が言ったのでしょうか? Redis トランザクションは厳密な ACID トランザクション (EXEC を使用して実行のために送信される一連のコマンドなど、実行中にサーバーがダウンしているため、一部のコマンドが実行され、残りは実行されません)が、このトランザクションは依然としてコマンドのパッケージ化と実行の基本機能を提供します(サーバーに問題がない場合は、一連のコマンドを確実に実行できます)一緒に実行すると、他のクライアント コマンドが途中に挿入されて実行されます)。 Redis には監視機能も用意されており、キーを監視してトランザクションを実行できますが、このプロセス中に監視の値が変更されると、トランザクションが検出され、実行が拒否されます。

関連する推奨事項: redis データベース チュートリアル

以上がRedisデータ構造の利用シナリオの紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート