redis数据类型Hash命令

Hash类型

hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:

Hash命令

HSET key field value 赋值

HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

127.0.0.1:6379> hset user username zhangsan 
(integer) 1

HMSET key field value [field value …] 一次可以设置多个字段值

127.0.0.1:6379> hmset user age 20 username lisi 
OK

HSETNX key field value 当字段不存在时赋值

当字段不存在时赋值,类似HSET,区别在于如果字段存在,该命令不执行任何操作

127.0.0.1:6379> hsetnx user age 30    
如果user中没有age字段则设置age值为30,否则不做任何操作
(integer) 0

HGET key field 一次只能获取一个字段值

127.0.0.1:6379> hget user username
"zhangsan“

HMGET key field [field …] 一次可以获取多个字段值

127.0.0.1:6379> hmget user age username
1) "20"
2) "lisi"

HGETALL key 获取所有字段值

127.0.0.1:6379> hgetall user
1) "age"
2) "20"
3) "username"
4) "lisi"

HDEL key field [field …] 可以删除一个或多个字段,返回值是被删除的字段个数

127.0.0.1:6379> hdel user age
(integer) 1
127.0.0.1:6379> hdel user age name
(integer) 0
127.0.0.1:6379> hdel user age username
(integer) 1 

HINCRBY key field increment 增加值

127.0.0.1:6379> hincrby user age 2    将用户的年龄加2
(integer) 22
127.0.0.1:6379> hget user age        获取用户的年龄
"22“

HEXISTS key field 判断字段是否存在

127.0.0.1:6379> hexists user age        查看user中是否有age字段
(integer) 1
127.0.0.1:6379> hexists user name    查看user中是否有name字段
(integer) 0

HKEYS key 只获取字段名

HVALS key 只获取字段值

127.0.0.1:6379> hmset user age 20 name lisi 
OK
127.0.0.1:6379> hkeys user
1) "age"
2) "name"
127.0.0.1:6379> hvals user
1) "20"
2) "lisi"

HLEN key 获取字段长度

127.0.0.1:6379> hlen user    
(integer) 2

Hash应用

存储商品信息:

商品字段

【商品id、商品名称、商品描述、商品库存、商品好评】

定义商品信息的key

商品1001的信息在 Redis中的key为:[items:1001]

储商品信息

192.168.101.3:7003> HMSET items:1001 id 3 name apple price 999.9
OK

获取商品信息

192.168.101.3:7003> HGET items:1001 id
"3"
192.168.101.3:7003> HGETALL items:1001
1) "id"
2) "3"
3) "name"
4) "apple"
5) "price"
6) "999.9"