Redisチュートリアル(4):Hashesデータ型

5843 ワード

一、概説:
Redis中のHashes型をString KeyとString Valueを持つmap容器と見なすことができる.したがって、このタイプは値オブジェクトの情報を格納するのに非常に適しています.Username、Password、Ageなどです.Hashにわずかなフィールドが含まれている場合、このタイプのデータもわずかなディスク領域しか消費されません.各Hashは、4294967295個のキー値ペアを記憶することができる.
二、関連コマンドのリスト:
コマンドプロトタイプ
時間の複雑さ
コマンドの説明
戻り値
HSET key field value
O(1)
指定したキーに対してField/Valueペアを設定します.キーが存在しない場合、このコマンドはパラメータのField/Valueペアとして新しいKeyを作成します.パラメータのFieldがすでに存在する場合、その元の値を新しい値で上書きします. 
1は新しいフィールドに新しい値が設定されていることを示し、0はフィールドがすでに存在していることを示し、新しい値で元の値を上書きします. 
HGET key field 
O(1) 
指定キーで指定したフィールドの関連付け値を返します.
パラメータのFieldの関連値を返し、パラメータのKeyまたはFieldが存在しない場合はnilを返します.
HEXISTSkey field 
O(1) 
指定キーの指定フィールドが存在するか否かを判定する.
1は存在を示し、0はパラメータのFieldまたはKeyが存在しないことを示す.
HLEN key 
O(1)
キーに含まれるFieldの数を取得します.
キーに含まれるFieldの数を返し、キーが存在しない場合は0を返します.
HDEL key field [field ...] 
O(N)
時間複雑度のNは、パラメータから削除するフィールドの数を表します.指定したKeyのHashes Valueからパラメータで指定した複数のフィールドを削除し、存在しない場合は無視します.キーが存在しない場合、それを空のHashesと見なし、0を返す.
実際に削除されたFieldの数.
HSETNXkey field value
O(1)
パラメータのKeyまたはFieldが存在しない場合にのみ、指定したKeyに対してField/Valueペアを設定します.そうしないと、コマンドは何も行われません. 
1は新しいFieldに新しい値が設定されていることを示し、0はKeyまたはFieldがすでに存在していることを示し、このコマンドは何も行われていない.
HINCRBYkey field increment 
O(1)
指定キーで指定したフィールドに関連付けられているValueの値を増やします.キーまたはFieldが存在しない場合、このコマンドは新しいキーまたは新しいFieldを作成し、関連するValueを0に初期化してから、数値が増加する操作を指定します.このコマンドがサポートする数字は64ビットのシンボル整数であり、incrementは負の数を表すことができる. 
演算後の値を返します.
HGETALLkey
O(N) 
時間的複雑度のNは、Keyに含まれるFieldの数を表す.このキーに含まれるすべてのField/Valueを取得します.返されるフォーマットは、Field、Valueです.
Field/Valueのリスト.
HKEYSkey 
O(N)
時間的複雑度のNは、Keyに含まれるFieldの数を表す.指定したKeyのすべてのFields名を返します.
Fieldのリスト.
HVALSkey 
O(N)
時間的複雑度のNは、Keyに含まれるFieldの数を表す.指定したKeyのすべてのValue名を返します. 
Valueのリスト. 
HMGETkey field [field ...] 
O(N) 
時間複雑度のNは要求のField数を表す.パラメータで指定したFieldsに関連付けられているValuesのセットを取得します.要求されたFieldが存在しない場合、その値はnilを返します.キーが存在しない場合、コマンドはそれを空のHashと見なし、nilのセットを返します.
要求Fieldsに関連付けられたValuesのセットを返します.このグループは、Fieldsの要求順序と同じ順序で返されます.
HMSET key field value [field value ...]
O(N)
時間複雑度のNは設定されたField数を表す.パラメータに指定されたField/Valueペアを1対ずつ順番に設定します.いずれかのFieldが既に存在する場合は、既存の値を新しい値で上書きします.キーが存在しない場合は、新しいキーを作成し、パラメータのField/Valueを設定します.  
 
三、コマンドの例:
    1. HSET/HGET/HDEL/HEXISTS/HLEN/HSETNX:  
 
  
    # Shell Redis
    /> redis-cli
    # myhash field1, stephen。
    redis 127.0.0.1:6379> hset myhash field1 "stephen"
    (integer) 1
    # myhash, field1 。
    redis 127.0.0.1:6379> hget myhash field1
    "stephen"
    #myhash field2 , nil。
    redis 127.0.0.1:6379> hget myhash field2
    (nil)
    # myhash Hashes field2, liu。
    redis 127.0.0.1:6379> hset myhash field2 "liu"
    (integer) 1
    # myhash 。
    redis 127.0.0.1:6379> hlen myhash
    (integer) 2
    # myhash field1 , , 1。
    redis 127.0.0.1:6379> hexists myhash field1
    (integer) 1
    # myhash field1 , 1。
    redis 127.0.0.1:6379> hdel myhash field1
    (integer) 1
    # myhash field1 , , , 0。
    redis 127.0.0.1:6379> hdel myhash field1
    (integer) 0
    # myhash field1 , , 0。
    redis 127.0.0.1:6379> hexists myhash field1
    (integer) 0
    # hsetnx myhash field1, stephen, , 1。
    redis 127.0.0.1:6379> hsetnx myhash field1 stephen
    (integer) 1
    # myhash field1 , 0。
    redis 127.0.0.1:6379> hsetnx myhash field1 stephen
    (integer) 0

   2. HINCRBY:
  
 
  
    # , 。
    redis 127.0.0.1:6379> del myhash
    (integer) 1
    # , myhash field 1。
    redis 127.0.0.1:6379> hset myhash field 5
    (integer) 1
    # myhash field 1, 。
    redis 127.0.0.1:6379> hincrby myhash field 1
    (integer) 6
    # myhash field -1, 。
    redis 127.0.0.1:6379> hincrby myhash field -1
    (integer) 5
    # myhash field -10, 。
    redis 127.0.0.1:6379> hincrby myhash field -10
    (integer) -5  

    3. HGETALL/HKEYS/HVALS/HMGET/HMSET:
 
 
  
    # , 。
    redis 127.0.0.1:6379> del myhash
    (integer) 1
    # myhash, , field1 = "hello", field2 = "world"。
    redis 127.0.0.1:6379> hmset myhash field1 "hello" field2 "world"
    OK
    # myhash , field3 , nil。
    redis 127.0.0.1:6379> hmget myhash field1 field2 field3
    1) "hello"
    2) "world"
    3) (nil)
    # myhash , , 。
    redis 127.0.0.1:6379> hgetall myhash
    1) "field1"
    2) "hello"
    3) "field2"
    4) "world"
    # myhash 。
    redis 127.0.0.1:6379> hkeys myhash
    1) "field1"
    2) "field2"
    # myhash 。
    redis 127.0.0.1:6379> hvals myhash
    1) "hello"
    2) "world"