4、hashデータ型操作

4494 ワード

一、概説:
Redis中のHashes型をString KeyとString Valueを持つmap容器と見なすことができる.したがって、このタイプは値オブジェクトの情報を格納するのに非常に適しています.Username、Password、Ageなどです.Hashにわずかなフィールドが含まれている場合、このタイプのデータもわずかなディスク領域しか消費されません.各Hashは、4294967295個のキー値ペアを記憶することができる.
二、関連コマンドのリスト:
コマンドプロトタイプ時間複雑度コマンド記述戻り値HSET key field value O(1)指定したKeyに対してField/Valueペアを設定し、Keyが存在しない場合、このコマンドは新しいKeyを作成してパラメータのField/Valueペアを作成し、パラメータのFieldが既に存在する場合、その元の値を新しい値で上書きします.1は新しいフィールドに新しい値が設定されていることを示し、0はフィールドがすでに存在していることを示し、新しい値で元の値を上書きします.HGET key field O(1)は、指定キーで指定されたFieldの関連値を返します.パラメータのFieldの関連値を返し、パラメータのKeyまたはFieldが存在しない場合はnilを返します.HEXISTS key field O(1)は、指定Keyにおける指定Fieldが存在するか否かを判定する.1は存在を示し、0はパラメータのFieldまたはKeyが存在しないことを示す.HLEN key O(1)は、そのKeyに含まれるFieldの数を取得する.キーに含まれるFieldの数を返し、キーが存在しない場合は0を返します.HDEL key field[field...]O(N)時間複雑度のNは、パラメータから削除されるフィールドの数を表す.指定したKeyのHashes Valueからパラメータで指定した複数のフィールドを削除し、存在しない場合は無視します.キーが存在しない場合、それを空のHashesと見なし、0を返す.実際に削除されたFieldの数.HSETNX key field value O(1)パラメータのKeyまたはFieldが存在しない場合のみ、指定したKeyに対してField/Valueペアを設定します.そうしないと、このコマンドは何も行われません.1は新しいFieldに新しい値が設定されていることを示し、0はKeyまたはFieldがすでに存在していることを示し、このコマンドは何も行われていない.HINCRBY key field incrementO(1)指定Keyで指定したFieldに関連付けられたValueを増加させる.キーまたはFieldが存在しない場合、このコマンドは新しいキーまたは新しいFieldを作成し、関連するValueを0に初期化してから、数値が増加する操作を指定します.このコマンドがサポートする数字は64ビットのシンボル整数であり、incrementは負の数を表すことができる.演算後の値を返します.HGETALL key O(N)時間複雑度のNは、Keyに含まれるFieldの数を表す.このキーに含まれるすべてのField/Valueを取得します.返されるフォーマットは、Field、Valueです.Field/Valueのリスト.HKEYS key O(N)時間複雑度のNは、Keyに含まれるFieldの数を表す.指定したKeyのすべてのFields名を返します.Fieldのリスト.HVALskey O(N)時間複雑度のNは、Keyが含むField数を表す.指定したKeyのすべてのValue名を返します.Valueのリスト.HMGET key 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"