一、哈希类型:hash
Redis的 hash 是一个 string 类型的 key 和 value 的映射表,这里的value是一系列的键值对,hash特别适合用于存储对象。
key | field | value |
---|---|---|
user1 | username age school | 楚子航 24 卡塞尔学院 |
user2 | username age school | 路明非 21 卡塞尔学院 |
哈希类型的数据操作总的思想是通过key和field操作value,key是数据标识,field是域,value是我们感兴趣的业务数据。
一、hash 数据的操作命令
1.hset key field value [field value …]
功能:将键值对field-value设置到哈希列表key中,如果key不存在,则新建哈希列表,然后执行赋值,如果key下的field已经存在,则value值覆盖。
返回值:返回设置成功的键值对个数。
127.0.0.1:6379> hset stu s1 80 s2 95 s3 98
(integer) 3
2.hget key field
功能:获取哈希表 key 中给定域 field 的值。
返回值:field 域的值;
如果 key 不存在或者 field 不存在返回 nil。
127.0.0.1:6379> hget stu s1
"80"
127.0.0.1:6379> hget stu s5
(nil)
3.hmset key field value [field value…]
功能:同时将多个 field-value (域-值)设置到哈希表 key 中,此命令会覆盖已经存在的 field,hash 表 key 不存在,创建空的 hash 表,再执行 hmset。
返回值:返回设置成功的键值对个数。
127.0.0.1:6379> keys *
1) "stu"
127.0.0.1:6379> hmset stu s1 100
OK
127.0.0.1:6379> hget stu s1
"100"
127.0.0.1:6379> hmset stu1 s1 100
OK
127.0.0.1:6379> keys *
1) "stu"
2) "stu1"
4.hmget key field [field…]
功能:获取哈希表 key 中一个或多个给定域的值。
返回值:返回和field顺序对应的值;
如果field不存在,返回nil
127.0.0.1:6379> hmget stu s1 s2 s9
1) "100"
2) "95"
3) (nil)
127.0.0.1:6379>
5.hgetall key
功能:获取哈希表 key 中所有的域和值。
返回值:以列表形式返回hash中域和域的值
如果 key 不存在,返回空 hash。
127.0.0.1:6379> keys *
1) "stu"
2) "stu1"
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> hgetall stu
1) "s1"
2) "100"
3) "s2"
4) "95"
5) "s3"
6) "98"
127.0.0.1:6379> hgetall stu2
(empty list or set)
6.hdel key field [field…]
功能:删除哈希表 key 中的一个或多个指定域field,不存在field直接忽略。
返回值:成功删除的field的数量。
127.0.0.1:6379> hgetall stu
1) "s1"
2) "100"
3) "s2"
4) "95"
5) "s3"
6) "98"
127.0.0.1:6379> hdel stu s1 s2
(integer) 2
127.0.0.1:6379> hgetall stu
1) "s3"
2) "98"
7.hlen key
功能:获取哈希表 key 中域 field 的个数。
返回值:数值,field的个数;
key不存在返回0。
127.0.0.1:6379> hlen stu
(integer) 1
8.hexists key field
功能:查看哈希表 key 中,给定域 field 是否存在。
返回值:如果field存在,返回1,其他返回0。
127.0.0.1:6379> hexists stu s3
(integer) 1
9.hkeys key
功能:查看哈希表 key 中的所有field域列表。
返回值:包含所有field的列表,key 不存在返回空列表。
127.0.0.1:6379> hkeys stu
1) "s3"
10.hvals key
功能:返回哈希表 中所有域的值列表。
返回值:包含哈希表所有域值的列表,key 不存在返回空列表。
127.0.0.1:6379> hvals stu
1) "98"
11.hincrby key field int
功能:给哈希表 key 中的 field 域增加 int。
返回值:返回增加之后的 field 域的值。
127.0.0.1:6379> hincrby stu s3 2
(integer) 100
12.hincrbyfloat key field float
功能:给哈希表 key 中的 field 域增加 float 。
返回值:返回增加之后的 field 域的值。
127.0.0.1:6379> hincrbyfloat stu s3 2.5
"102.5"
13.hsetnx key field value
功能:将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在的时候才设置,否则不设置。
返回值:设值成功返回1,其他返回0。
127.0.0.1:6379> hsetnx stu s5 2.5
(integer) 1
写在最后
以上关于 Redis 中 hash 类型数据结构的具体内容,后续如果有时间的话我也将持续更新,如果有错误或者是哪里不足的地方,欢迎各位大大提出宝贵的意见呀~
此外,想了解关于 Redis 的一些其他使用命令使用方法可以关注下方公众号,后台回复 “redis ”即可获取,期待着您的光临~
相关链接:
链接: 007- Redis 数据结构 - set类型.
链接: 006 - Redis 数据结构 - List类型.
链接: 005 - Redis 数据结构 - String类型.