Redisのハッシュ型を操作するコマンドと、CSVデータを一括投入する方法を記録する。
一、ハッシュ関連コマンド
hset/hmset:ハッシュに1つまたは複数のフィールドを設定するhget/hmget:ハッシュから1つまたは複数のフィールドの値を取得するhdel:ハッシュから1つまたは複数のフィールドを削除する。削除に成功したフィールド数を返すhlen:ハッシュに含まれるフィールド数を取得するhexists:指定したフィールドがハッシュ内に存在するか確認するhkeys:ハッシュ内のすべてのフィールド名を取得するhvals:ハッシュ内のすべての値を取得するhgetall:ハッシュ内のすべてのフィールドと値を取得するhincrby:指定フィールドの値を整数分インクリメントする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
この方法はプロジェクトの初期データ投入時に有効である。