1、概述
Redis的Hash结构类似于Java中的Map<String,Map<String,Stgring>>,键是字符串,值是另一个映射。结构如图:
因此Hash结构很适合用来存储对象。
这里的键相当于对象名称,字段类似对象中的属性名、值就类似对象的属性值
2、常用命令
2.1、 HSET、HSETNX和HGET(添加、获取)
- HSET
- 介绍:
1)Redis Hset 命令用于为哈希表中的字段赋值 。
2)如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
3)如果字段已经存在于哈希表中,旧值将被覆盖。
- 返回值:
如果字段是哈希表中的一个新建字段,并且值设置成功,返回 1 。 如果哈希表中域字段已经存在且旧值已被新值覆盖,返回 0
- 示例:
- HSETNX
- 注意:
Hsetnx 命令用于为哈希表中不存在的的字段赋值 。
1)如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。
2)如果字段已经存在于哈希表中,操作无效。
3)如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。
与HSET的区别在于,当字段存在时,HSET会覆盖,HSETNX不做任何操作
- 返回值:
设置成功,返回 1 。 如果给定字段已经存在且没有操作被执行,返回 0 。
- 示例:
- HGET
- 介绍:
Hget 命令用于返回哈希表中指定字段的值。
- 返回值:
返回给定字段的值。如果给定的字段或 key 不存在时,返回 nil
- 示例:
2.2、HEXISTS(是否存在)
- 基本语法:
HEXISTS KEY_NAME FIELD_NAME
- 返回值:
如果哈希表含有给定字段,返回 1 。 如果哈希表不含有给定字段,或 key 不存在,返回 0 。
- 示例:
2.3、HMSET和HMGET(批量的添加、获取)
- 基本语法
这两个命令与MSET和MGET类似,都是批量的添加和获取
Hmset 命令用于同时将多个 field-value (字段-值)对设置到哈希表中。此命令会覆盖哈希表中已存在的字段。
- 返回结果:
包含多个给定字段关联的值的列表,表值的排列顺序和指定字段的请求顺序一样。如果指定的字段不存在于哈希表,那么返回一个 nil 值。
- 示例:
2.4、HGETALL、HKEYS、HVALS(查询全部)
返回值:
指定key 的所有字段的名及值。返回值里,紧跟每个字段名(field name)之后是字段的值(value),所以返回值的长度是哈希表大小的两倍
示例:
示例:
注意:这个命令不是HVALUES,而是HVALS,是value 的缩写:val
示例:
2.5、HDEL(删除)
Hdel 命令用于删除哈希表 key 中的一个或多个指定字段,不存在的字段将被忽略。
语法:
HDEL key field1 [field2 … ]
返回值:
被成功删除字段的数量,不包括被忽略的字段
示例:
2.6、HINCRBY(自增)
- 注意:
1)Redis Hincrby 命令用于为哈希表中的字段值加上指定增量值。
2)增量也可以为负数,相当于对指定字段进行减法操作。
3)如果哈希表的 key 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。
4)如果指定的字段不存在,那么在执行命令前,字段的值被初始化为 0 。
5)对一个储存非数字值的字段执行 HINCRBY 命令将造成一个错误。
- 语法:
HINCRBY key field amount
- 返回值:
执行 HINCRBY 命令之后,哈希表中字段的值。
- 示例:
2.7、HLEN(字段数量)
- 返回值:
哈希表中字段的数量。 当 key 不存在时,返回 0 。
- 示例:
|