redis的散列类型不能嵌套其他数据类型,它存储了字段和字段值的映射,是一种字典结构,但是字段值只能是字符串String。 散列类型适合存储对象:使用对象类别和ID构成键名,用字段表示对象的属性,字段值存储属性值。
例如我们需要在mysql中存一张汽车资料表
IDcolornameprice1黑色宝马50万2白色奥迪100万3蓝色奔驰200万如果此时业务需要为宝马牌子的车增加生产日期
IDcolornamepricedate1黑色宝马50万2019-11-012白色奥迪100万3蓝色奔驰200万从表中可以看出ID为2,3的两条记录不需要这个date属性。 在现实业务中经常会出现这种同一张表不同记录需要维护不同属性的场景,久而久之表中的冗余字段就会越来越多。
redis的散列类型就不存在这个问题
1.hset/hget 设置/获取单个字段属性的值 2.hmset/hmget 设置/获取多个属性值 3.hgetall key 可以返回对象的所有字段和属性值 返回的是字段和字段值组成的列表,不是很直观,但是在业务中可以将返回的结果封装成对象处理 4.hexists key field 用来判断一个字段是否存在。如果存在返回1,否则返回0 5.hsetnx key field value 当字段不存在时赋值 hsetnx和hset命令类似,区别在于如果字段已经存在,hsetnx将不执行任何操作。 6.删除字段 hdel key field 可以删除一个或多个字段,返回值是被删除的字段个数
7.只获取字段名和只获取字段值 hkeys key hvals key
8.获取字段数量 hlen key