Redisハッシュ操作の頻出コマンドまとめ

Redisのハッシュ型を操作するコマンドと、CSVデータを一括投入する方法を記録する。

一、ハッシュ関連コマンド

  1. hset / hmset:ハッシュに1つまたは複数のフィールドを設定する
  2. hget / hmget:ハッシュから1つまたは複数のフィールドの値を取得する
  3. hdel:ハッシュから1つまたは複数のフィールドを削除する。削除に成功したフィールド数を返す
  4. hlen:ハッシュに含まれるフィールド数を取得する
  5. hexists:指定したフィールドがハッシュ内に存在するか確認する
  6. hkeys:ハッシュ内のすべてのフィールド名を取得する
  7. hvals:ハッシュ内のすべての値を取得する
  8. hgetall:ハッシュ内のすべてのフィールドと値を取得する
  9. hincrby:指定フィールドの値を整数分インクリメントする
  10. hincrbyfloat:指定フィールドの値を浮動小数点数分インクリメントする
# 1. hmset で複数フィールドを設定
127.0.0.1:6379> hset user:1001 username taro
127.0.0.1:6379> hmset user:1001 age 25 city tokyo

# 2. hmget で複数フィールド取得
127.0.0.1:6379> hget user:1001 username
"taro"
127.0.0.1:6379> hmget user:1001 username age
1) "taro"
2) "25"

# 3. hdel でフィールド削除(成功数)
127.0.0.1:6379> hdel user:1001 city
(integer) 1

# 4. hlen でフィールド数
127.0.0.1:6379> hlen user:1001
(integer) 2

# 5. hexists で存在確認
127.0.0.1:6379> hexists user:1001 username
(integer) 1
127.0.0.1:6379> hexists user:1001 city
(integer) 0

# 6. hkeys ですべてのキー
127.0.0.1:6379> hkeys user:1001
1) "username"
2) "age"

# 7. hvals ですべての値
127.0.0.1:6379> hvals user:1001
1) "taro"
2) "25"

# 8. hgetall ですべてのフィールドと値
127.0.0.1:6379> hgetall user:1001
1) "username"
2) "taro"
3) "age"
4) "25"

# 9. hincrby で整数加算
127.0.0.1:6379> hincrby user:1001 age 10
(integer) 35

# 10. hincrbyfloat で浮動小数点加算
127.0.0.1:6379> hincrbyfloat user:1001 age 2.5
"37.5"

二、CSVファイルからの一括投入

以下の data.csv には、ハッシュキーと値がカンマ区切りで2列に格納されている。1列目がフィールド名、2列目が値。ハッシュ名は bulk:hash とする。

cat data.csv | awk -F ',' '{print "hset bulk:hash "$1" "$2}' | redis-cli -h 127.0.0.1 -a password -p 6379 --pipe

この方法はプロジェクトの初期データ投入時に有効である。

タグ: redis Hash バッチ挿入 コマンド

7月20日 16:02 投稿