元のテキストのアドレスが更新され、読書効果が向上しました。
説明する
普段の業務では基本的にRedisの基本的なデータ型(String、List、Hash、Set、Sorted Set)のみを使用し、特殊な型(Geo、Bitmap、Hyperloglog)は特別なビジネスシーンでのみ使用するため、通常は基本的なデータ型をマスターするだけでよく、特殊な型については理解できます。
#文字列 string
文字列型、つまり文字列型は、Redis で最も単純なストレージ型です。String 型はバイナリ セーフです。これは、redis の文字列には任意のデータを含めることができることを意味します。jpg画像やシリアル化されたオブジェクトなど。
その値は文字列ですが、文字列の形式に応じて、次の 3 つのカテゴリに分類できます。
- 文字列: 通常の文字列
- int: 整数型、自己インクリメントおよび自己デクリメント演算が可能
- float: 浮動小数点型、自己インクリメントおよび自己デクリメント演算が可能
フォーマットに関係なく、最下層はバイト配列の形式で格納されますが、エンコード方法が異なります。文字列タイプの最大スペースは 512m を超えることはできません。
String型の共通操作コマンド:
注文 | 説明 |
---|---|
設定 | 文字列型の既存のキーと値のペアを追加または変更する |
得る | キーに応じてString型の値を取得する |
MSET | String 型の複数のキーと値のペアをバッチで追加する |
MGET | 複数のキーに応じてString型の値を複数取得 |
増額 | 整数キーを 1 ずつインクリメントします |
インクラビー | 整数キーを自動インクリメントさせて、ステップ サイズを指定します。例: incrby num 2 num 値を 2 ずつ自動インクリメントさせます。 |
インクリビーフロート | 指定されたステップ サイズで浮動小数点数をインクリメントします |
SETNX | キーが存在しない場合は、文字列型のキーと値のペアを追加します。それ以外の場合は実行されません。 |
セブン | String型のキーと値のペアを追加し、有効期間を指定します |
Redis のキーにはディレクトリ構造はありませんが、複数の単語を階層構造にすることができ、複数の単語は「:」で区切られ、一般的には の形式が使用されます项目名:业务名:类型:id
。
この形式は固定されていないため、必要に応じてエントリを削除または追加することもできます。
例えば
たとえば、プロジェクト名は myblog で、データにはユーザーと製品の 2 つの異なるタイプがあり、次のようにキーを定義できます。
ユーザー関連キー: myblog:user:1
製品関連キー: myblog:product:1
Value が User オブジェクトなどの Java オブジェクトの場合、オブジェクトを JSON 文字列にシリアル化して保存できます。
鍵 | 価値 |
---|---|
私のブログ:ユーザー:1 | {“id”:1、“名前”:“ジャック”、“年齢”:21} |
私のブログ:製品:1 | {"id":1、"名前": "Xiaomi 11"、"価格": 4999} |
#ハッシュハッシュ
ハッシュ型はハッシュとも呼ばれますが、ハッシュ型になることもあります。その値は、Java の HashMap 構造に似た、順序付けされていない辞書です。
ハッシュ構造はオブジェクト内の各フィールドを独立して格納でき、単一フィールドに対して CRUD を実行できます。
ハッシュ型データ
ハッシュの一般的なコマンドは次のとおりです。
注文 | 説明 |
---|---|
HSET キーフィールドの値 | ハッシュ型キーのフィールドの値を追加または変更します |
HGETキーフィールド | ハッシュ型キーのフィールド値を取得する |
HMSET | hmset と hset は同じ効果を持ちます。hmset は 4.0 以降は破棄できます。 |
HMGET | 複数のハッシュ型キーのフィールド値を一括取得 |
ヘゲタール | ハッシュ型キー内のすべてのフィールドと値を取得します |
HKEYS | ハッシュ型キーのすべてのフィールドを取得します |
くじら | ハッシュ型キーのすべての値を取得する |
ヒンクラビー | ハッシュ型キーのフィールド値を自動インクリメントさせ、ステップサイズを指定します |
HSETNX | フィールドが存在しない場合は、ハッシュ タイプ キーのフィールド値を追加します。それ以外の場合は実行されません。 |
#リストリスト
Redis の List タイプは Java の LinkedList に似ており、二重にリンクされたリスト構造とみなすことができます。順方向検索と逆方向検索の両方をサポートできます。
特性も LinkedList に似ています。
- 秩序ある
- 要素は繰り返すことができます
- 高速な挿入と削除
- 一般的なクエリ速度
これは、友人サークルのようなリスト、コメント リストなど、順序付けされたデータを保存するためによく使用されます。
注文 | 説明 |
---|---|
LPUSH キー要素 … | リストの左側に 1 つ以上の要素を挿入します |
LPOPキー | リストの左側の最初の要素を削除して返します。要素がない場合は nil を返します。 |
RPUSH キー要素 … | リストの右側に 1 つ以上の要素を挿入します |
RPOPキー | リストの右側の最初の要素を削除して返します。 |
LRANGE キースターエンド | 添え字の範囲内のすべての要素を返します |
BLPOPとBRPOP | LPOP および RPOP と似ていますが、要素がない場合に nil を直接返すのではなく、指定された時間待機する点が異なります。 |
両端キューの概略図
#セットコレクション
Redis の Set 構造は Java の HashSet に似ており、値が null の HashMap とみなすことができます。ハッシュテーブルでもあるため、HashSetと同様の性質を持っています。
- 故障中
- 要素を繰り返すことはできません
- 早く見つけてください
- 交差、和集合、差分などの関数をサポート
注文 | 説明 |
---|---|
SADD主要メンバー… | 1 つ以上の要素をセットに追加します |
SREM主要メンバー | セット内の指定された要素を削除します |
SCARDキー | セット内の要素の数を返します |
SISMEMBER 主要メンバー | 要素がセット内に存在するかどうかを判断する |
メンバー | セット内のすべての要素を取得します |
SINTER キー1 キー2 … | key1 と key2 の共通部分を見つけます |
SDIFF キー1 キー2 … | key1 と key2 の違いを見つけます |
スニオン キー1 キー2 … | key1 と key2 の和集合を見つけます |
ヒント 交差図、差分図、和集合図
# SortedSet 順序付けられたコレクション
Redis の SortedSet は Zset とも呼ばれます。これは並べ替え可能なセット コレクションであり、Java の TreeSet に似ていますが、基礎となるデータ構造は大きく異なります。
SortedSet の各要素にはスコア属性があり、要素はスコア属性に基づいて並べ替えることができます。基盤となる実装はスキップ リスト (SkipList) とハッシュ テーブルです。
SortedSet には次の特徴があります。
- 並べ替え可能
- 要素は繰り返されません
- クエリ速度
SortedSet は並べ替え可能な性質があるため、リーダーボードなどの機能の実装によく使用されます。
SortedSet の一般的なコマンドは次のとおりです。
注文 | 説明 |
---|---|
ZADDキースコアメンバー | ソートされたセットに 1 つ以上の要素を追加し、スコア値がすでに存在する場合は更新します。 |
ZREM主要メンバー | ソートされたセット内の指定された要素を削除します |
ZSCORE 主要メンバー | ソートされたセット内の指定された要素のスコア値を取得します |
ZRANK主要メンバー | ソートされたセット内の指定された要素のランクを取得します |
Zカードキー | ソートされたセット内の要素の数を取得します |
ZCOUNT キー最小最大 | スコア値が指定された範囲内にあるすべての要素の数をカウントします。 |
ZINCRBY キー増分メンバー | ソートセット内の指定された要素を自己増分させ、ステップサイズは指定された増分値になります。 |
ZRANGE キー最小最大 | スコアでソート後、指定したランキング範囲内の要素を取得 |
ZRANGEBYSCORE キー最小最大 | スコア順に並べ替えた後、指定したスコア範囲内の要素を取得します |
ズディフ、ツィンター、ズニオン | 差分、交差、和集合を見つける |
知らせ
デフォルトではすべてのランキングが昇順になっていますが、降順に並べたい場合は、コマンドの Z の後に追加REV
できます。