四、Redis哈希(Hash)类型参考记录

作者: 温新

分类: 【Redis】

阅读: 2474

时间: 2020-08-31 13:17:23

Redis是采用字典结构以键值对的形式存储数据的。哈希类型的键值也是一种字典结构,储存了字段和字段值的映射,字段值能是字符串,不支持其他数据类型。

哈希类型不能嵌套其他数据类型。

一个哈希类型键可以包含至多232-1个字段。

**哈希类型适合存储对象:**使用对象类别和ID构成键名,使用字段表示对象的属性,字段值则存储属性值。如下案例:存储ID为1的文章对象,分别使用作者、时间、内容这3个字段来存储文章的信息。

基本命令 取值/赋值

hset 将哈希表中key中的field的值设置为value

​ 语法:hset key field value

# hset设置单个值
127.0.0.1:6379> hset car price 10000
(integer) 1
127.0.0.1:6379> hset car name BMW
(integer) 1
# 字段已存在,执行更新操作,返回0
127.0.0.1:6379> hset car name BMWM
(integer) 0

# 设置多个field-value 
127.0.0.1:6379> hset article author ziruchu time 2020
(integer) 2

若哈希表不存在,则创建;若字段已存在,则新值覆盖旧值。

hset不区分插入还是更新操作,当执行插入操作时(字段不存在),hset命令返回1;当执行更新操作时(字段存在),hset命令返回0。键不存在时,hset会自动创建该键。

hmset 将多个field-value对设置到哈希表key中

​ 语法:hmset key field1 value1 [field2 value2 ...]

127.0.0.1:6379> hmset cat color white age 2
OK

hsetnx field字段不存在时,设置哈希表字段的值

​ 语法:hsetnx key field value

127.0.0.1:6379> hsetnx article1 time 2020
(integer) 1
127.0.0.1:6379> hsetnx article1 author 'xiao bai'
(integer) 1

hget 获取一个存储在哈希表中指定字段的值

​ 语法:hget key filed

127.0.0.1:6379> hget cat color
"white"

hmget 获取哈希表指定字段的值

​ 语法:hmget key field [field1,field2 ...]

127.0.0.1:6379> hmget cat color age
1) "white"
2) "2

hgetall 获取指定哈希表指定key的所有字段和值

​ 语法:hgetall key

127.0.0.1:6379> hgetall cat
1) "color"
2) "white"
3) "age"
4) "2"

其他命令

hexists 判断一个字段是否存在

​ 语法:hexists key field

127.0.0.1:6379> hexists cat age
(integer) 1
127.0.0.1:6379> hexists cat a
(integer) 0

hexists判断一个字段是否存在,存在返回1,不存在返回0

hdel 删除一个或多个字段

​ 语法:hdel key field1 [field2 ...]

127.0.0.1:6379> hdel car name
(integer) 1
127.0.0.1:6379> hdel cat color age
(integer) 2

返回被删除字段的个数

hkeys 获取所有字段

​ 语法:hkeys key

127.0.0.1:6379> hkeys article
1) "author"
2) "time"

hvals 获取所有值

​ 语法:hvals key

127.0.0.1:6379> hvals article
1) "ziruchu"
2) "2020"

hlen 获取字段数量

​ 语法:hlen key

127.0.0.1:6379> hlen article
(integer) 2

hincrby 为哈希表key中指定字段的整数值加上增量值

​ 语法:hincrby key field 增量值

127.0.0.1:6379> hmset number id 1 total 3
OK

127.0.0.1:6379> hincrby number id 10
(integer) 11

hincrbyfloat 为哈希表key中指定字段的浮点数值加上增量值

​ 语法:hincrbyfloat key field 增量值

127.0.0.1:6379> hincrbyfloat number total 10.34
"13.34"

hscan 迭代哈希表中的键值对

​ 语法:hsan key cursor [match pattern] [count count]

​ 参数:

+ cursor 游标
+ pattern 匹配模式
+ count 指定从数据集返回多少元素,默认10
127.0.0.1:6379> hscan article 0 match "a*"
1) "0"
2) 1) "author"
   2) "ziruchu"

2020-08-31

请登录后再评论