Redis的数据类型(二)------ Hash数据类型

**

Hash类型

**
1、使用String的问题
假设有User对象以JSON序列化的形式存储到Redis中,User对象有id,username、password、age、name等属性,存储的过程如下:
保存、更新:
User对象 —>json(string) —> redis
如果在业务上只是更新age属性,其他的属性并不做更新我应该怎么做呢? 如果仍然采用上边的方法在传输、处理时会造成资源浪费,下边讲的hash可以很好的解决这个问题。

User “{“username”:”gyf”,”age”:”80”}”

2、redis hash介绍
hash叫散列类型,它提供了字段和字段值的映射。字段值只能是字符串类型,不支持散列类型、集合类型等其它类型。如下:
在这里插入图片描述
3、赋值
HSET命令不区分插入和更新操作,当执行插入操作时HSET命令返回1,当执行更新操作时返回0。

#一次只能设置一个字段值
语法:HSET key field value
例子:
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

#当字段不存在时赋值,类似HSET,区别在于如果字段存在,该命令不执行任何操作
语法:HSETNX key field value
例子:
127.0.0.1:6379> hsetnx user age 30
(integer) 0
如果user中没有age字段则设置age值为·30,否则不做任何操作

4、取值
#一次只能获取一个字段值
语法: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”

5、删除字段
可以删除一个或多个字段,返回值是被删除的字段个数
语法: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

6、增加数字
语法: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“
7、判断字段是否存在
语法: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
8、只获取字段名或字段值
语法:
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”
9、获取字段数量
语法:HLEN key
例子:
127.0.0.1:6379> hlen user
(integer) 2
10、应用
商品字段
【商品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”

猜你喜欢

转载自blog.csdn.net/qq_41984282/article/details/88576957