Redisの基本データ型(ハッシュハッシュ)

ハッシュ

ストレージタイプ

複数の順序付けられていないキーと値のペアを格納します。最大ストレージ量は2 ^ 32-1(約40億)で、値は文字列のみであり、他のタイプはネストできません

Stringの長所と短所

  1. 利点
    • 関連するすべての値を1つのキーに集めて、メモリスペースを節約します
    • キーの競合を減らすために1つのキーのみを使用する
    • 値をバッチで取得する必要がある場合は、1つのコマンドを使用するだけでメモリ/ IO / CPUの消費を削減できます
  2. 不利益
    • フィールドで有効期限を個別に設定することはできません
    • データ量の分散を考慮する必要があります(フィールドが多い場合、複数のノードに分散することはできません)

一般的な操作コマンド

hset:設定値

  • コマンド

    HSET key field value
    
  • 説明

    keyで指定されたハッシュセットに指定されたフィールドの値を設定します。

    キーで指定されたハッシュセットが存在しない場合、新しいハッシュセットが作成され、キーに関連付けられます。

    フィールドがハッシュセットに存在する場合、それは上書きされます。

  • 戻り値

    • 1-フィールドが新しいフィールドの場合
    • 0-フィールドが元々マップに存在していた場合
  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HGET myhash field1
    "Hello"
    redis> 
    

hget:値を取得します

  • コマンド

    HGET key field
    
  • 説明

    キーで指定されたハッシュセットのフィールドに関連付けられた値を返します

  • 戻り値

    このフィールドに関連付けられている値。フィールドが存在しないか、キーが存在しない場合、nilが返されます。

  • redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HGET myhash field1
    "foo"
    redis> HGET myhash field2
    (nil)
    redis> 
    

hmset:複数の値を設定します

  • コマンド

    HMSET key field value [field value ...]
    
  • 説明

    key指定されたフィールドハッシュの指定された濃度の値を設定します。このコマンドは、ハッシュセットに存在するすべてのフィールドを書き換えます。場合はkey指定されたハッシュセットが存在しない、新しいハッシュセットを作成し、key関連します

  • redis> HMSET myhash field1 "Hello" field2 "World"
    OK
    redis> HGET myhash field1
    "Hello"
    redis> HGET myhash field2
    "World"
    redis> 
    

hmget:複数の値を取得します

  • コマンド

    HMGET key field [field ...]
    
  • 説明

    key指定されたフィールドハッシュの指定された濃度の値を返します。

    ハッシュフォーカスフィールドが存在しない場合、戻りnil値。それらが存在しないため、キーは存在しないkey実行に設定された空のハッシュと見なされ、値のリストHMGETのみが返されnilます

  • 戻り値

    指定されたフィールドとその値のリストが含まれ、リクエストと同じ順序を維持します。

  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HMGET myhash field1 field2 nofield
    1) "Hello"
    2) "World"
    3) (nil)
    redis> 
    

hkeys:ハッシュのすべてのキー値を取得します

  • コマンド

    HKEYS key
    
  • 説明

    keyで指定されたハッシュセット内のすべてのフィールドの名前を返します。

  • 戻り値

    ハッシュセット内のフィールドのリスト。キーで指定されたハッシュセットが存在しない場合は、空のリストが返されます。

  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HKEYS myhash
    1) "field1"
    2) "field2"
    redis> 
    

hvals:キーのすべての値を取得します

  • コマンド

    HVALS key
    
  • 説明

    keyで指定されたハッシュセット内のすべてのフィールドの値を返します。

  • 戻り値

    ハッシュセット内の値のリスト。キーで指定されたハッシュセットが存在しない場合、空のリストが返されます。

  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HVALS myhash
    1) "Hello"
    2) "World"
    redis> 
    

hgetall:キーのすべてのフィールドと値の値を取得します

  • コマンド

    HGETALL key
    
  • 説明

    keyで指定されたハッシュセット内のすべてのフィールドと値を返します。戻り値では、各フィールド名の次はその値であるため、戻り値の長さはハッシュセットのサイズの2倍になります。

  • 戻り値

    ハッシュセット内のフィールドと値のリスト。キーで指定されたハッシュセットが存在しない場合は、空のリストが返されます。

  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HGETALL myhash
    1) "field1"
    2) "Hello"
    3) "field2"
    4) "World"
    redis> 
    

hdel:キーで指定されたフィールドを削除します

  • コマンド

    HDEL key field [field ...]
    
  • 説明

    キーで指定されたハッシュセットから指定されたドメインを削除します。ハッシュセットに存在しないドメインは無視されます。

    キーで指定されたハッシュセットが存在しない場合は、空のハッシュセットと見なされ、コマンドは0を返します。

  • 戻り値

    指摘されているが存在しないドメインを除いて、ハッシュセットから正常に削除されたドメインの数を返します

  • redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HDEL myhash field1
    (integer) 1
    redis> HDEL myhash field2
    (integer) 0
    redis> 
    

hlen:ハッシュに含まれるフィールドの数を取得します

  • コマンド

    HLEN key
    
  • 説明

    key指定されたハッシュセットに含まれるフィールドの数を返します

  • 戻り値

    key指定されたハッシュセットが存在しない場合は0として、ハッシュ内のフィールドの数

  • redis> HSET myhash field1 "Hello"
    (integer) 1
    redis> HSET myhash field2 "World"
    (integer) 1
    redis> HLEN myhash
    (integer) 2
    redis> 
    

hexists:ハッシュが存在するかどうかを判断します

  • コマンド

    HEXISTS key field
    
  • 説明

    フィールドがハッシュに存在するかどうかを返します

  • 戻り値

    • 1 --hashには、フィールドが含まれます。
    • 0 --hashにフィールドが含まれていないか、キーが存在しません。
  • redis> HSET myhash field1 "foo"
    (integer) 1
    redis> HEXISTS myhash field1
    (integer) 1
    redis> HEXISTS myhash field2
    (integer) 0
    redis> 
    

hincrby:ハッシュの整数値が増加します

  • コマンド

    HINCRBY key field increment
    
  • 説明

    key指定されたハッシュ集中指定された数値フィールドを増やします。key存在しない場合は、key関連付けを使用して新しいハッシュセットを作成しますフィールドが存在しない場合、操作が実行される前にフィールドの値が0に設定されます

    HINCRBY サポートされる値の範囲は64ビットの符号付き整数に制限されています

  • 戻り値

    付加価値操作が実行された後のこのフィールドの値。

  • redis> HSET myhash field 5
    (integer) 1
    redis> HINCRBY myhash field 1
    (integer) 6
    redis> HINCRBY myhash field -1
    (integer) 5
    redis> HINCRBY myhash field -10
    (integer) -5
    redis> 
    

hincrbyfloat:ハッシュの浮動小数点数の増加

  • コマンド

    HINCRBYFLOAT key field increment
    
  • 説明

    指定されたkeyハッシュfieldフィールド値に対してfloat型のincrement加算実行しますそれは場合にはfield存在しない、操作を実行する前に0に設定し、次のいずれかの状況が発生した場合は、エラーが返されます。:

    • field値に間違ったタイプが含まれています(文字列ではありません)。
    • 現在、fieldまたはincrementフロートタイプとして解析できません。
  • 戻り値

    fieldincrement付加価値の実装

  • redis> HSET mykey field 10.50
    (integer) 1
    redis> HINCRBYFLOAT mykey field 0.1
    "10.6"
    redis> HSET mykey field 5.0e3
    (integer) 0
    redis> HINCRBYFLOAT mykey field 2.0e2
    "5200"
    redis> 
    

hsetnx

  • コマンド

    HSETNX key field value
    
  • 説明

    key指定されたハッシュ濃度指定フィールドが存在しない場合のみ、フィールドの値を設定します。場合はkey指定されたハッシュセットが存在しない、新しいハッシュセットとして作成keyの関連付けを。フィールドがすでに存在する場合、この操作は効果がありません。

  • 戻り値

    • 1-フィールドが新しいフィールドであり、正常に割り当てられた場合
    • 0-フィールドがハッシュセットにすでに存在する場合、操作は実行されません
  • redis> HSETNX myhash field "Hello"
    (integer) 1
    redis> HSETNX myhash field "World"
    (integer) 0
    redis> HGET myhash field
    "Hello"
    redis> 
    

hstrlen:ハッシュ指定フィールドの値の文字列長を取得します

  • コマンド

    HSTRLEN key field
    
  • 戻り値

    ハッシュ指定フィールドの値の文字列長を返します。ハッシュまたはフィールドが存在しない場合は、0を返します。

  • redis> HMSET myhash f1 HelloWorld f2 99 f3 -256
    OK
    redis> HSTRLEN myhash f1
    (integer) 10
    redis> HSTRLEN myhash f2
    (integer) 2
    redis> HSTRLEN myhash f3
    (integer) 4
    redis> 
    

おすすめ

転載: blog.csdn.net/huangge1199/article/details/112319703