文章目录
一、Hash简介
Hash类似于Java中的Map,是一个 String 类型的 field 和 value 的映射表(键值对集合),key是字符串,value是key/value键值对,并且特别适合用来存储对象。
二、Hash的常用操作命令总结
图片来源:https://www.runoob.com/redis/redis-hashes.html
![]() |
![]() |
三、部分命令使用实例
1.HSET、HGET 、HMSET、 HMGET
HSET key field value
将哈希表 key 中的字段 field 的值设为 value 。
HGET key field
获取存储在哈希表key中指定字段field的值。使用如下:
127.0.0.1:6379> HSET user name z3
(integer) 1
127.0.0.1:6379> HGET user name
"z3"
HMSET key field1 value1 [field2 value2 ]
HMSET命令可以同时将多个 field-value (域-值)对设置到哈希表 key 中。
HMGET key field1 [field2]
HMGET命令可以批量返回key指定的哈希表中指定字段field的值,使用如下:
127.0.0.1:6379> HMSET user id 1 age 18
OK
127.0.0.1:6379> HMGET user id age
1) "1"
2) "18
2.HGETALL、 HKEYS、 HVALS
HGETALL key
获取在哈希表 key 中的所有字段和值。返回值:field1,value1,field2,value2,…,返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍。使用如下:
127.0.0.1:6379> HGETALL user
1) "name"
2) "z3"
3) "id"
4) "1"
5) "age"
6) "18"
HKEYS key
用于获取哈希表key中的所有字段field,使用如下:
127.0.0.1:6379> HKEYS user
1) "name"
2) "id"
3) "age"
HVALS key
用于获取哈希表key中的所有值value,使用如下:
127.0.0.1:6379> HVALS user
1) "z3"
2) "1"
3) "18"
3.HDEL
HDEL key field1 [field2]
删除哈希表key中的一个或多个指定的哈希表字段field,如下:
127.0.0.1:6379> HMSET user k1 v1 k2 v2
OK
127.0.0.1:6379> HDEL user k1 k2
(integer) 2
127.0.0.1:6379> HKEYS user
1) "name"
2) "id"
3) "age"
4.HLEN
HLEN key
获取哈希表key中字段field的数量,如下:
127.0.0.1:6379> HKEYS user
1) "name"
2) "id"
3) "age"
127.0.0.1:6379> HLEN user
(integer) 3
5.HEXISTS
HEXISTS key field
查看哈希表 key 中,指定的字段field是否存在。存在返回1,不存在返回0,使用如下:
127.0.0.1:6379> HEXISTS user k1
(integer) 0
127.0.0.1:6379> HEXISTS user name
(integer) 1
6.HINCRBY、HINCRBYFLOAT
HINCRBY key field increment
为哈希表 key 中的指定字段field的整数值加上增量 increment 。field对应的值必须是整数,成功执行后返回field更改后的值。如果key不存在,会创建一个新的哈希集并与key关联。如果字段不存在,则字段的值在该操作执行前被设置为0,HINCRBY支持的值的范围限定在64位有符号整数。使用如下:
127.0.0.1:6379> HINCRBY user name 2
(error) ERR hash value is not an integer
127.0.0.1:6379> HINCRBY user id 2
(integer) 3
127.0.0.1:6379> HGET user id
"3"
HINCRBYFLOAT key field increment
与HINCRBY相似,HINCRBYFLOAT为哈希表 key 中的指定字段field的浮点数值加上增量 increment 。increment和field对应的值可以是整数或浮点数,成功执行后返回field更改后的值。使用如下:
127.0.0.1:6379> HINCRBYFLOAT user id 1.5
"4.5"
127.0.0.1:6379> HINCRBYFLOAT user id 5
"9.5"
127.0.0.1:6379> hget user id
"9.5"
7.HSETNX
HSETNX key field value
只有在字段 field 不存在时,设置哈希表key中字段的值。成功返回1,失败返回0.使用如下:
127.0.0.1:6379> hget user id
"9.5"
127.0.0.1:6379> HSETNX user id 10
(integer) 0
127.0.0.1:6379> HSETNX user point 2
(integer) 1