四、Redis哈希(Hash)类型参考记录
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