このブログを再現禁止許可なしに、元の作者に属し、オリジナルを尊重してください!ご質問がありましたら、お願い接触QQ509961766
唯一のスキーマは、数の違いに対応するデシベル従来のデータベースとは異なりRedisの、テーブルの概念、。同じDBに、トップ・レベル・モデルのようなキーは、その値が平坦化されます。これは、キーデシベル名前空間です。
Redisの中のデータ構造の5種類の合計は、各利用シナリオは、それがどのようなデータ構造私たちは皆知っているされていることをことを?
- 文字列ストリング]
- ハッシュ・辞書
- リスト - リスト
- セット - コレクション
- ソートされたセット - セットを注文しました
ここでは簡単な要約を見て、5つの一般的に使用されるコマンドの種類だけでなく、使用シナリオ、どのようなデータ構造は、どのような状況下で使用します。ここでは単に命令する各章の詳細な説明に続いて、一般的に使用されるコマンド、ある、なじみのない学生は、データ型を理解しても、一般的に使用されるコマンドに精通しているのに役立ちます、演習に従ってクライアントを開くことができますコマンド。いくつかの単語の男が入力されていることを、言いました。
1.String文字列
Stringデータ構造は、文字列に加えて、多くの人が、他の基本的なデータ型は、このようなハロー世界として、キー値のような形を、他の言語の文字列のように、使用されていないと言うことができる最も一般的なタイプです、こんにちはキーは、世界は価値があります。値が唯一の文字列ではない、それはまた、数であってもよいです。要するに、文字列はすべてを保存することができ、何を保存することができますが、特定の使用シナリオに依存します。
コマンド | 説明 |
---|---|
SETキー値 | 指定されたキーの値を設定します |
GETキー | 指定されたキーの値を取得します |
SETNXキー値 | キーでのみ設定キーが存在しません。 |
SETEXキー秒の値 | [設定]キー、キーを(秒)秒の時間を有効期限が切れるように設定されています |
APPENDキー値 | 最後に文字列を追加するには |
練習へのOpen Client
例えば、メモリキーは=こんにちは、=これはRedisのテスト値であります
アプリケーションシナリオの文字列
1.储存某个字符串,字段
2.储存某个对象
3.计数器,字符串是整数时,可以使用自增,自减,例如id自增,微信点赞自增
4.Redis的所有操作都是单线程保证了数据的原子性,在高并发场景下保证数据的一致性
2.Hash辞書
私たちは、多くの場合、構造化にパッケージ化、いくつかの情報のHashMap、クライアントは、ユーザのニックネーム、年齢、性別、およびその他の積分として文字列(通常はJSON形式)、の一連の値として格納された後。必要性は、特定のを修正するために、この時間は、通常の文字列(JSON)を取り出し、その後、デシリアライズを必要とし、1の値を変更し、次いで、シリアル化ストリング(JSON)がバック格納されています。単純にたくさんのことを乾燥するプロパティを変更、消費が大きくなければならない、それが可能な同時操作の機会の数には適用されません(例えば2つの同時操作は、ポイントを変更する必要があります)。Redisのハッシュの構造は、プロパティは、特定のプロパティ値を変更すると、データベースに更新のように見えるようにすることができます。Redisのハッシュフィールドは、文字列型とマッピングテーブルの値であり、ハッシュは、特にオブジェクトを格納するのに適しています。
コマンド | 説明 |
---|---|
HSETキーフィールド値 | ハッシュテーブルのキーフィールドのフィールドの値が値に設定されています |
HMSETキーフィールド1をvalue1 [フィールド2値2] | フィールド値の複数(ドメイン - 値)しながら、ハッシュテーブルのキーに設けられました |
HMGETキーフィールド1 [フィールド2] | 与えられたすべてのフィールドの値を取得します。 |
HKEYSキー | ハッシュテーブル内のすべてのフィールドを取得します。 |
練習へのOpen Client
例えば、私は、例えば、人の名前、年齢、性別、生年月日、およびその他の情報レイカーズのコービー・ブライアントを維持したい
コマンドを次のとおりです。HMSET神戸名「ブライアント」年齢 42性別「男」の誕生「2020年8月23日」チーム「レイカーズ"
ハッシュ・アプリケーションのシナリオ
hash 类型十分适合存储对象类数据。
相比于在 String 中介绍的把对象转化为 json 字符串存储,
Hash 的结构可以任意添加或删除‘字段名’,更加高效灵活。
而String中存json对象,如果要修改json中某个属性,开销是很大的。
而Hash类型可以很好的解决这个问题,大大减小开销
3.Listリスト(注文した繰り返し可能)
リスト文字列リストは、(Redisのは、ダブルエンドリストの一覧を使用して達成)頭部と尾部に新しい要素を挿入するために、挿入の順にソート。使用リスト構造は、我々は簡単に(例えばシーナマイクロブロギングのタイムラインなど)の機能をランキング最新のニュースを実装することができます。別のアプリケーションは、タスクリスト、そしてPOP動作実行タスクを撮影した後、ワーカースレッドがあるだろう、リスト* PUSH操作を利用することができ、メッセージキュー一覧です。
コマンド | 説明 |
---|---|
LPUSHキー値1 [値2] | 1つ以上の値は、リストの先頭に挿入されます |
LPUSHXキー値 | リストの先頭に値がすでに存在しています |
LRANGEキー、スタートストップ | 指定された範囲内の要素のリストを取得します。 |
LLENキー | リストの長さを取得します。 |
練習へのOpen Client
例えば、すべての関連するメモリブライアントは、リストに属性
コマンドLPUSHプレイヤブライアント42人1978年8月23日レイカーズ PG
次いでLLEN選手はリストの長さを確認することができ
、次いでLRANGEプレーヤ0~6は、以下の標準的なリストに従って注目を得てもよいですマーク、またはコマンドエラーを外さなければなりません。
添字は間違って行くしませんが、空のセットになります、例えば、スタートが終了添字よりも大きいです
シナリオのリスト
1.消息队列,list类型的lpop和rpush能实现队列的功能
2.最新消息,list类型的lpush命令和lrange命令能实现最新列表的功能,
每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表,
如朋友圈的点赞列表、评论列表。
3.排行榜,list类型的lrange命令可以分页查看队列中的数据。可将每隔一段时间计算一次的排行榜存储在list类型中
4.由于list 是链表结构,所有如果在头部和尾部插入数据,性能会非常高,不受链表长度的影响;
但如果在链表中插入数据,性能就会越来越差。
4.Setセット(障害繰り返しません)
セットコレクションが異なる値の束の概念の組み合わせで、コレクションです。Redisのを使用して設定するデータ構造を使用すると、データセットの一部を記憶することができる、提供します。そして、要素のセットを注文されていないのセットの中で、要素のインデックスは存在しません。例えば、マイクロブログアプリケーションでは、ユーザーは、人々の集合の存在は、そのファンの全てのコレクションがあるでしょう、すべての注意を持つことができます。Redisのはの交差点や労働組合、差異およびその他の操作の非常にユーザーフレンドリーコレクションを提供するので、それはあなたも、そのような共通の懸念、共通の好み、二度の友人や他の機能、上記のすべての操作のセットを達成するためには非常に簡単にすることができます選択結果を使用することができます別のコマンドは、新しいセットを設定するためにクライアントに保存されています。
コマンド | 説明 |
---|---|
SADDキーメンバー1 [member2] | コレクションに1つ以上のメンバーを追加します。 |
SCARDキー | コレクションの長さを取得します。 |
SISMEMBER主要メンバー | メンバーは、メンバーの重要な要素の集合であるかどうかを確認 |
SMEMBERSキー | コレクションのすべてのメンバーに戻ります |
SREMキーメンバー1 [member2] | 1つまたは複数のメンバーのセットを削除します |
練習へのOpen Client
セットコレクションにNBAの選手の名前例えば、保存
SADD NBAは硬化カレージェームズ・リラードウェストブルック神戸デュラントポール・アーヴィング愛アンソニーはembiid
、コレクションSMEMBERS NBAを表示
してから、コレクション長SCARD NBAを表示
して、コレクション内にヨルダンかどうかを確認
してから削除要素神戸
設定されたアプリケーションのシナリオ
1.共同好友/关注/粉丝/感兴趣/黑名单的人集合,求交集,并集,差集
2.随机集合,由于set是无序集合,适合一些随机使用场景,例如微博推荐,标签等等
5.Sortedセットのセットを注文しました
セットと比較しては、ソートは重みパラメータスコアによって増加する要素のセットを設定し、セット内のそのような要素は、そのようなプレイヤーの数値を設定することができます統計集合NBA選手のストレージ技術として、スコアによって発注することができますスコアは、データが収集に挿入さそうという、プレイヤーのスコアかもしれないが、それはすでに自然の秩序を持っていました。また、重要なメッセージは2のスコア、そのような一般的なメッセージ。1つのスコアとして重みを持つソートセットキューで行うことができ、その後、ワーカースレッドは、スコア作業の逆の順序を得るように選択することができます。重要なタスクの優先順位を確認します。
コマンド | 説明 |
---|---|
ZADDキーSCORE1のメンバー1 [score2 member2]] | スコアの既存のメンバーを1つ以上のメンバーの順序付けられた集合に追加または更新 |
ZCARDキー | コレクションの長さを取得します。 |
ZSCORE主要メンバー | 順序集合、小数値のメンバーを返します。 |
ZRANGEキー、スタートストップ[WITHSCORES] | インデックスによって間隔が指定した範囲内のメンバーの順序付きセットを返します |
練習へのOpen Client
例えばNBAの選手の得点シーズンを堆積
ZADDスコア33.4 HARDEN 29.1 JAMES 28.8デュラント 27.7 CURRY 27.1リラードが27.1 WESTBROOK
その後、長ZCARDスコアを確認し
、その後ZSCORE SCORE JAMES参照ジェームス画分
スコアリングの前に、その後ZRANGE SCORE 0 5 6を参照してください
ソートセットのアプリケーションシナリオ
1.好友亲密度
2.NBA球员得分榜