三,redis常用的数据类型--哈希hash

Redis的哈希是field和value之间的映射,即键值对的集合,所以特别适合用于存储对象。

我们可以将哈希想象成map。

一,常用的指令

    1)hset和hget;hmset和hmget

127.0.0.1:6379> hset mh name laoli
(integer) 1
127.0.0.1:6379> hget mh name
"laoli"
127.0.0.1:6379> hset mh sex boy
(integer) 1
127.0.0.1:6379> hget mh sex
"boy"
127.0.0.1:6379> hmset student name li sex boy age 50
OK
127.0.0.1:6379> hmget student name sex age
1) "li"
2) "boy"
3) "50"
将数据覆盖,将上面的50替换成30

127.0.0.1:6379> hmset student name li sex boy age 30 OK 127.0.0.1:6379> hmget student name sex age 1) "li" 2) "boy" 3) "30"

2)hdel 删除filed

127.0.0.1:6379> hdel student age
(integer) 1
127.0.0.1:6379> hmget student name sex age
1) "li"
2) "boy"
3) (nil)

3)hgetall和hkeys,hvals

      hgetall是获取哈希表中对应key中所有的字段和值。

      hkeys是获取哈希表中对应key中所有的字段。

      hvals是获取哈希表中对应key中所有的值。

127.0.0.1:6379> hgetall student
1) "name"
2) "li"
3) "sex"
4) "boy"
127.0.0.1:6379> hkeys student
1) "name"
2) "sex"

  127.0.0.1:6379> hvals student
  1) "li"
  2) "boy"

4)hsetnx

只有在字段 field 不存在时,设置哈希表字段的值

127.0.0.1:6379> hgetall student
1) "name"
2) "li"
3) "sex"
4) "boy"
127.0.0.1:6379> hsetnx student age 29
(integer) 1
127.0.0.1:6379> hgetall student
1) "name"
2) "li"
3) "sex"
4) "boy"
5) "age"
6) "29"

  127.0.0.1:6379> hsetnx student age 30
  (integer) 0

5)hexists 查看哈希表中的key中,指定的字段是否存在

127.0.0.1:6379> hgetall student
1) "name"
2) "li"
3) "sex"
4) "boy"
5) "age"
6) "30"
127.0.0.1:6379> hexists student age
(integer) 1
127.0.0.1:6379> hexists student ll
(integer) 0

6)hlen hash的长度

127.0.0.1:6379> hlen student
(integer) 3
127.0.0.1:6379> hkeys student
1) "name"
2) "sex"
3) "age"

二,应用场景

hash可以应该用到变更数据比较多的场合,比如对象熟悉的变化比较多的场景; 

hash存储时开销较小,修改时,可以仅仅修改其中一个filed(属性)的值,开销小

原文地址:https://www.cnblogs.com/invban/p/14201956.html