Redis 之hash的使用

273 阅读2分钟

Hash

类似于Map<K,V>

创建取值和删除

标题
hset将哈希表 hash 中域 field 的值设置为 value 。如果给定的哈希表并不存在, 那么一个新的哈希表将被创建并执行 HSET 操作。如果域 field 已经存在于哈希表中, 那么它的旧值将被新值 value 覆盖。
hget返回哈希表中给定域的值。
hgetall返回哈希表 key 中,所有的域和值。在返回值里,紧跟每个域名(field name)之后是域的值(value),所以返回值的长度是哈希表大小的两倍。
hmget返回哈希表 key 中,一个或多个给定域的值。如果给定的域不存在于哈希表,那么返回一个 nil 值。因为不存在的 key 被当作一个空哈希表来处理,所以对一个不存在的 key 进行 HMGET 操作将返回一个只带有 nil 值的表。
hdel删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略。
127.0.0.1:6379> hset myhash k1 v1 k2 v2 k3 v3 k4 v4   # 创建 和hmset一样
(integer) 4
127.0.0.1:6379> hget myhash k3               # 获取对应hash 中Key(field) 对应的Value
"v3"
127.0.0.1:6379> hgetall myhash            # 获取hash中全部的K(field)-V  
1) "k1"      # key(field)
2) "v1"      # value
3) "k2"
4) "v2"
5) "k3"
6) "v3"
7) "k4"
8) "v4"
127.0.0.1:6379> hmget myhash k2 k4    # 获取hash中多个key(field)对应的value
1) "v2"
2) "v4"
127.0.0.1:6379> hdel myhash k3       # 移除hash中,对应的key(field)和value
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "k1"
2) "v1"
3) "k2"
4) "v2"   
5) "k4"
6) "v4"

求大小判断是否存在

标题
hlen返回哈希表 key 中域的数量。
hexists检查给定域 field 是否存在于哈希表 hash 当中。返回值:HEXISTS 命令在给定域存在时返回 1 , 在给定域不存在时返回 0 。
hkeys返回哈希表 key 中的所有域。
hvals返回哈希表 key 中所有域的值。
127.0.0.1:6379> hgetall myhash
1) "k1"
2) "v1"
3) "k2"
4) "v2"
5) "k4"
6) "v4"
127.0.0.1:6379> hlen myhash
(integer) 3
127.0.0.1:6379> hexists myhash k4  # 判断k4是否存在
(integer) 1                        # 存在
127.0.0.1:6379> hexists myhash k3
(integer) 0                         # 不存在
127.0.0.1:6379> hkeys myhash   # 取key
1) "k1"
2) "k2"
3) "k4"
127.0.0.1:6379> hvals myhash   # 取value
1) "v1"
2) "v2"
3) "v4"