- 2021-02-24更新:增加Redis 6.2新增的
HRANDFIELD
命令。
在之前的文章中,我们介绍了Redis中有关于字符串(string)以及列表(list)类型的命令,今天我们来介绍Redis中另外一种类型——哈希表(hash)。哈希表还被称之为散列、字典等,我们在本文中便称它为哈希表。它是一个字符串类型field
(下文中称之为域)与其关联的值(同样为字符串类型)的映射表。
哈希表的命令与字符串及键操作命令相似,其底层结构的实现也与Redis键空间相类似,所以文中在碰到与之前相类似的命令时将只做比较简单的介绍。
HSET
HSET
命令用于设置哈希表中指定域的值,并返回新添加的域的数量。若哈希表中对应的域已存在则将覆盖其值。在Redis 4.0.0及以上版本中,HSET
命令允许同时设置一个或多个域的值,若版本低于4.0.0可使用下文将会介绍到的HMSET
命令。
HSET key field value [field value ...]
示例
redis> HSET students s01 "Zhang San" s02 "Li Si"
(integer) 2
redis> HGET students s02
"Li Si"
redis> HSET students s02 "Wang Wu" s003 "Zhao Liu"
(integer) 1
redis> HGET students s02
"Wang Wu"
HGET
HGET
命令用于获取哈希表中指定域对应的值,当哈希表不存在或哈希表中不存在指定名称的域时将返回nil
。
HGET key field
示例
redis> HSET students s01 "Zhang San" s02 "Li Si"
(integer) 2
redis> HGET students s02
"Li Si"
redis> HGET students s03
(nil)
HLEN
HLEN
命令用户获取哈希表中存在的域的数量,当哈希表不存在时将返回0
。
HLEN key
示例
redis> HSET students s01 "Zhang San" s02 "Li Si"
(integer) 2
redis> HLEN students
(integer) 2
redis> HSET students s03 "Wang Wu"
(integer) 2
redis> HLEN students
(integer) 3
HDEL
HDEL
命令用于移除哈希表中指定的域(Redis 2.4以上的版本支持同时移除一个或多个),并返回实际移除的域的个数。当指定的域不存在时将忽略该域不执行移除的操作;若哈希表不存在,将认为其为一个空哈希表并返回0
。
HDEL key field [field ...]
示例
redis> HSET students s01 &#