Redisの基本データ型(ハッシュハッシュ)
- ハッシュ
-
- ストレージタイプ
- Stringの長所と短所
- 一般的な操作コマンド
-
- hset:設定値
- hget:値を取得します
- hmset:複数の値を設定します
- hmget:複数の値を取得します
- hkeys:ハッシュのすべてのキー値を取得します
- hvals:キーのすべての値を取得します
- hgetall:キーのすべてのフィールドと値の値を取得します
- hdel:キーで指定されたフィールドを削除します
- hlen:ハッシュに含まれるフィールドの数を取得します
- hexists:ハッシュが存在するかどうかを判断します
- hincrby:ハッシュの整数値が増加します
- hincrbyfloat:ハッシュの浮動小数点数の増加
- hsetnx
- hstrlen:ハッシュ指定フィールドの値の文字列長を取得します
ハッシュ
ストレージタイプ
複数の順序付けられていないキーと値のペアを格納します。最大ストレージ量は2 ^ 32-1(約40億)で、値は文字列のみであり、他のタイプはネストできません
Stringの長所と短所
- 利点
- 関連するすべての値を1つのキーに集めて、メモリスペースを節約します
- キーの競合を減らすために1つのキーのみを使用する
- 値をバッチで取得する必要がある場合は、1つのコマンドを使用するだけでメモリ/ IO / CPUの消費を削減できます
- 不利益
- フィールドで有効期限を個別に設定することはできません
- データ量の分散を考慮する必要があります(フィールドが多い場合、複数のノードに分散することはできません)
一般的な操作コマンド
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
フロートタイプとして解析できません。
-
戻り値
field
increment
付加価値の実装 -
例
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>