Redis应用(三)---散列类型hash

介绍

redis的散列类型不能嵌套其他数据类型,它存储了字段和字段值的映射,是一种字典结构,但是字段值只能是字符串String。
散列类型适合存储对象:使用对象类别和ID构成键名,用字段表示对象的属性,字段值存储属性值。

运用场景

例如我们需要在mysql中存一张汽车资料表

ID color name price
1 黑色 宝马 50万
2 白色 奥迪 100万
3 蓝色 奔驰 200万

如果此时业务需要为宝马牌子的车增加生产日期

ID color name price date
1 黑色 宝马 50万 2019-11-01
2 白色 奥迪 100万
3 蓝色 奔驰 200万

从表中可以看出ID为2,3的两条记录不需要这个date属性。
在现实业务中经常会出现这种同一张表不同记录需要维护不同属性的场景,久而久之表中的冗余字段就会越来越多。

redis的散列类型就不存在这个问题

使用hash类型存储对象

1.hset/hget 设置/获取单个字段属性的值
Redis应用(三)---散列类型hash
Redis应用(三)---散列类型hash
2.hmset/hmget 设置/获取多个属性值
Redis应用(三)---散列类型hash
3.hgetall key
可以返回对象的所有字段和属性值
Redis应用(三)---散列类型hash
返回的是字段和字段值组成的列表,不是很直观,但是在业务中可以将返回的结果封装成对象处理
4.hexists key field
用来判断一个字段是否存在。如果存在返回1,否则返回0
Redis应用(三)---散列类型hash
5.hsetnx key field value
当字段不存在时赋值
hsetnx和hset命令类似,区别在于如果字段已经存在,hsetnx将不执行任何操作。
Redis应用(三)---散列类型hash
6.删除字段
hdel key field
可以删除一个或多个字段,返回值是被删除的字段个数
Redis应用(三)---散列类型hash

7.只获取字段名和只获取字段值
hkeys key
hvals key

8.获取字段数量
hlen key