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

可以看做Map集合,key-map! 时候这个值是一个map集合!

本质和String类型没有太大区别,还是一个简单的 key-vlaue!

1、插入、获取、查看

  • Hash插入值:HSET KEY FIELD VALUE [FIELD VALUE......]
  • Hash获取值:HGET KEY FIELD
  • Hash批量插入值:HMSET KEY FIELD VALUE [FIELD VALUE......]
  • Hash批量获取值:HMGET KEY FIELD [FIELD......]
  • Hash获取所有的值:HGETALL KEY
127.0.0.1:6379> hset myhash field1 kuangshen  # set一个具体 key-vlaue
(integer) 1
127.0.0.1:6379> hget myhash field1  # 获取一个字段值
"kuangshen"
127.0.0.1:6379> hmset myhash field1 hello field2 world   # set多个 key-vlaue
OK
127.0.0.1:6379> hmget myhash field1 field2   # 获取多个字段值
1) "hello"
2) "world"
127.0.0.1:6379> hgetall myhash   # 获取全部的数据,
1) "field1"
2) "hello"
3) "field2"
4) "world"

2、删除元素

  • Hash删除元素:HDEL KEY FIELD [FIELD......]
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379> HDEL myHash f2  # 删除hash指定key字段!对应的value值也就消失了! 
(integer) 1
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"

3、获取元素数量

  • Hash元素的数量获取:HLEN KEY
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HLEN myHash # 获取hash表的字段数量!
(integer) 2

4、判断元素存在

  • 判断Hash中元素是否存在:HEXISTS KEY FIELD
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HEXISTS myHash f1 # 判断hash中指定字段是否存在!
(integer) 1
127.0.0.1:6379> HEXISTS myHash f6
(integer) 0

5、获取所有元素,获取所有值

  • 获取Hash中所有元素:HKEYS KEY
  • 获取Hash中所有元素的值:HVALS KEY
# 只获得所有field
# 只获得所有value
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f3"
4) "v3"
127.0.0.1:6379> HKEYS myHash # 只获得所有field
1) "f1"
2) "f3"
127.0.0.1:6379> HVALS myHash # 只获得所有value
1) "v1"
2) "v3"

6、自增、自减

  • Hash中元素自增:HINCRBY KEY FIELD INCREMENT(正数)
  • Hash中元素自减:HINCRBY KEY FIELD INCREMENT(负数)
# incr   decr
127.0.0.1:6379> hset myhash field3 5    #指定增量!
(integer) 1
127.0.0.1:6379> HINCRBY myhash field3 1   # 自增
(integer) 6
127.0.0.1:6379> HINCRBY myhash field3 -1  #自减
(integer) 5
127.0.0.1:6379> hsetnx myhash field4 hello  # 如果不存在则可以设置 (integer) 1
127.0.0.1:6379> hsetnx myhash field4 world  # 如果存在则不能设置 (integer) 0

7、是否存在

  • Hash中元素是否存在:HSETNX KEY FIELD VALUE
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379> HSETNX myHash f4 v4 # 如果不存在则可以设置 
(integer) 1
127.0.0.1:6379> HGETALL myHash
1) "f1"
2) "v1"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
7) "f4"
8) "v4"
127.0.0.1:6379> HSETNX myHash f1 v99  # 如果存在则不能设置 
(integer) 0
127.0.0.1:6379> HSETNX myHash f1 v1
(integer) 0

总结

  • hash变更的数据 user name age,尤其是是用户信息之类的,经常变动的信息!

  • hash 更适合于对象的 存储

  • String更加适合字符串存储!

猜你喜欢

转载自blog.csdn.net/weixin_48560325/article/details/126415082
今日推荐