Redis五大数据类型——Hash(哈希)

Redis五大数据类型——Hash(哈希)

Map集合,key-Map集合。

HSET key field value [field value ...]
127.0.0.1:6379> HSET hash name liuhuan age 18	# HSET key field value field value
(integer) 2
127.0.0.1:6379> HGET hash name		        # HGET key field 只能取一个字段
"liuhuan"
127.0.0.1:6379> HGET hasn name		        # 如果没有key,则返回nil
(nil)
127.0.0.1:6379> HMGET hash name age             # 可以取多个字段
1) "liuhuan"
2) "18"
127.0.0.1:6379> HGETALL hash		        # 获取key中的所有的field和value 
1) "name"
2) "liuhuan"
3) "age"
4) "18"
127.0.0.1:6379> hset hash name huan age 16	# 如果有值则不会变更成功,返回0
(integer) 0
127.0.0.1:6379> hmset hash name huan age 16	# 如果有值,则更改,如果没有值则创建
OK
127.0.0.1:6379> HVALS hash
1) "16"
2) "huan"
3) "sh"
4) "male"
127.0.0.1:6379> HDEL hash name		                  # 删除字段,删除成功返回1,否则返回0
(integer) 1
127.0.0.1:6379> HLEN hash		                  # 获取键值对的数量,一对为1
(integer) 1
127.0.0.1:6379> hset hash name liuhuan city sh sex male   # 返回插入键值对的数量
(integer) 3
127.0.0.1:6379> HEXISTS hash name	                  # 判断hash中指定的字段是否存在,存在则返回1
(integer) 1
127.0.0.1:6379> HLEN hash		      # 返回插入键值对的数量
(integer) 4
127.0.0.1:6379> HKEYS hash		      # 获取hash中所有的field
1) "age"
2) "name"
3) "city"
4) "sex"
127.0.0.1:6379> HVALS hash		      # 获取hash中所有的value
1) "18"
2) "liuhuan"
3) "sh"
4) "male"
127.0.0.1:6379> HINCRBY hash age 1	      # 给某个字段的值加上指定的数量,可以是负数
(integer) 19
127.0.0.1:6379> HINCRBY hash age -1           # 返回的是计算后得到的值
(integer) 18
127.0.0.1:6379> HINCRBY hash name 2	      # 可以看到,只能给整数增加,不能给其他的数据类型增加
(error) ERR hash value is not an integer

总结:

  • hash的应用场景:
    • 用于指定数据的field的值的变更
    • 经常变动的信息
    • 更适合对象的存储
    • string更适合字符串的存储
  • hset与hmset的区别
    • 两者都是没有值则创建
    • 但是如果已经有字段存在,则hset返回0,不做任何变更,而hmset则会更改值
原文地址:https://www.cnblogs.com/liuhuan086/p/13581708.html