ホームページ  >  記事  >  データベース  >  Redisの5つのデータ構造の利用シーンを詳しく解説

Redisの5つのデータ構造の利用シーンを詳しく解説

藏色散人
藏色散人転載
2020-08-19 13:24:582671ブラウズ

次のコラム Redis チュートリアル では、Redis の 5 つのデータ構造の使用シナリオを紹介します。この記事では、Redis の 5 つのデータ型を紹介します: String、 Hash、List、Set、Sorted Setについて解説しているので、困っている友達は参考にしてください!

Redisの5つのデータ構造の利用シーンを詳しく解説

1. redis データ構造の使用シナリオ

私は redisbook という本を読み、redis の基本的な機能をすでに理解しています。さて、先週からredisのソースコードを見始めました。現在の目標は、redis のデータ構造を完全に理解することです。 Redis には 5 つのデータ構造があることは誰もが知っていますが、各データ構造の使用シナリオは何でしょうか?

String - String
Hash - Dictionary
List - List
Set - Set
Sorted Set - Ordered set

以下では、それぞれの使用シナリオを簡単に説明します。 :

1.String——String

String データ構造は単純なキーと値の型で、値は文字列だけでなく数値も使用できます (数値型が Long で表現できる場合) 、エンコーディングは整数であり、その他は文字列として sdshdr に保存されます)。 Strings 型を使用すると、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 命令的妙用,请于清空旧值的同时设置一个新值,配合原子计数器使用

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

存储、读取、修改用户属性

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

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


1.微博 TimeLine
2.消息队列
1.ソートされたセット—順序付けされたセット

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

1. ゲームのユーザー スコア ランキング リストなどの重みのある要素
2. 比較的複雑なデータ構造 (通常、あまり多くのシナリオでは使用されません)

2. 使用シナリオその他の Redis 機能の説明

1. サブスクリプション発行システム

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

1. トランザクション——トランザクション

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

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

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