Redisハッシュデータ構造の実践的操作ガイド

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"

タグ: redis Hash DataStructure NoSQL Key-ValueStore

6月25日 19:33 投稿