3.3 散列类型
3.3.1 介绍
我们知道Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型。一个散列类型键可以包含最多232-1个字段
散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。
3.3.2 命令
1.赋值与取值
HSET key field value
HGET key field
HMSET key field value [field value …]
HMGET key field [field …]
HGETALL key
HSET命令用来给字段赋值,而HEGET名利给用来获得字段的值。用法如下:
redis> HSET car price 500
(integer) 1
redis> HSET car name BWM
(integer) 1
redis> HGET car name
"BWM"
HSET命令的方便指出在于不区分插入和更新操作,这意味着修改数据时不用实现判断字段是否存在来决定要执行的是插入操作还是更新操作。
当需要同时设置多个字段的值时,可以使用HMSET命令。
如果向获取键中所有字段和字段值却不知道键中国有哪些字段时,应该使用HGETALL命令。
- 判断字段是否存在
HEZXISTSZ key field
HEXISTS命令用来判断一个字段是否存在。如果存在则返回1,否则返回0。
- 当字段不存在时赋值
HSETNX key field value
HSETNX 命令与HSET 命令类似,区别在于如果字段已经存在,HSETNX命令将不执行任何操作。
4. 增加数字
HINCRBY key field increment
散列类型没有HINCR命令,但是可以通过HINCRBY key field 1 来实现
5. 删除字段
HDEL key field [field …]
HEDL命令可以删除一个或多个字段,返回值时被删除的字段个数。
redis> HEDL car price
(integer) 1
redis> HEDL car price
(integer) 0
3.3.4 命令拾遗
- 只获取字段名或字段值
HKEYS key
HVALS key
有时仅仅需要获取键中所有字段的名字而不需要字段值,那么可以使用HKEYS命令。示例:
redis> HKEYS car
"name"
HVALS 命令与HKEYS对应,HVALS命令用来获得键中所有字段值,例如:
redis> HVALS car
"BWM"
- 获得字段数量
HLEN key