Redisハッシュは文字列型の属性と値のマッピングテーブルであり、オブジェクトデータの格納に最適なデータ構造です。単一のハッシュで最大232-1(約40億)のフィールドを保持可能です。
基本操作
ユーザープロファイルの管理を例に操作を説明します。
属性値の設定(HSET)
指定キーの属性に値を設定します。
127.0.0.1:6379> HSET user:1001 username "sakura" age "28" role "admin"
(integer) 2
127.0.0.1:6379> HSET user:1001 email "sakura@example.com"
(integer) 1
単一属性の取得(HGET)
特定属性の値を取得します。
127.0.0.1:6379> HGET user:1001 username
"sakura"
127.0.0.1:6379> HGET user:1001 age
"28"
属性の削除(HDEL)
複数属性を同時に削除可能です。
127.0.0.1:6379> HDEL user:1001 role age
(integer) 2
127.0.0.1:6379> HEXISTS user:1001 role
(integer) 0
検索操作
属性存在確認(HEXISTS)
属性の存在を確認します。
127.0.0.1:6379> HEXISTS user:1001 email
(integer) 1
127.0.0.1:6379> HEXISTS user:1001 phone
(integer) 0
全属性取得(HGETALL)
キーに紐付く全属性を取得します。
127.0.0.1:6379> HGETALL user:1001
1) "username"
2) "sakura"
3) "email"
4) "sakura@example.com"
属性名一覧(HKEYS)
設定済みの属性名をリスト表示します。
127.0.0.1:6379> HKEYS user:1001
1) "username"
2) "email"
高度な操作
条件付き設定(HSETNX)
属性が未設定の場合のみ値を設定します。
127.0.0.1:6379> HSETNX user:1001 created_at "2023-01-15"
(integer) 1
127.0.0.1:6379> HSETNX user:1001 email "new@example.com"
(integer) 0
数値演算(HINCRBY)
整数属性の値を増減させます。
127.0.0.1:6379> HSET user:1001 points 100
(integer) 1
127.0.0.1:6379> HINCRBY user:1001 points 50
(integer) 150
127.0.0.1:6379> HINCRBY user:1001 points -20
(integer) 130
浮動小数点演算(HINCRBYFLOAT)
小数点を含む数値操作が可能です。
127.0.0.1:6379> HSET user:1001 balance 99.9
(integer) 1
127.0.0.1:6379> HINCRBYFLOAT user:1001 balance 0.1
"100.0"
大規模データの走査(HSCAN)
MATCHオプションでパターン検索を実施します。
127.0.0.1:6379> HMSET user:2001 name "taro" dept "engineering" loc "tokyo"
OK
127.0.0.1:6379> HSCAN user:2001 0 MATCH dept*
1) "0"
2) 1) "dept"
2) "engineering"
その他のユーティリティ
属性数確認(HLEN)
設定済み属性の総数を取得します。
127.0.0.1:6379> HLEN user:1001
(integer) 3
複数属性取得(HMGET)
指定した複数属性を一度に取得します。
127.0.0.1:6379> HMGET user:1001 username points
1) "sakura"
2) "130"