目录
1、添加、查询、删除指令
2、hlen
3、hexists
4、获取字段/获取值
5、字段对应值的增加/减少
6、 hsetnx
7、hash类型使用案例
hash类型介绍:KV模式不变,但V是一个键值对,类似java中的map集合嵌套:Map<String, Map<Object, Object>>
1、添加、查询、删除指令
(1)hset
命令:hset key field value [field value …]
说明:将指定的字段设置为存储在键处的哈希中各自的值。此命令将覆盖哈希中存在的指定字段的值。若key不存在,则会创建一个包含哈希的新key。
127.0.0.1:6379> hset user:01 name jack age 18
(integer) 2
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
3) "age"
4) "18"
user:01 是整个hash类型的键,其值为后面的所有键值对,里面的 name 为键(field),jack 为前面键 name 的值(value),age 为键(field),18 为键 age 的值(value),此处的 18 是 String 类型
(2)hget
命令:hget key field
说明:返回与存储在键处的哈希中的字段(field)关联的值。
127.0.0.1:6379> hget user:01 name
"jack"
127.0.0.1:6379> hget user:01 age
"18"
(3)hmegt
命令:hmget key field [field …]
说明:返回与存储在键处的哈希中的指定字段(field)关联的值。对于哈希中不存在的每个字段,都会返回一个nil值。由于不存在的key被视为空哈希,因此对不存在的key执行hmget将返回一个nil值列表。
127.0.0.1:6379> hmget user:01 name age
1) "jack"
2) "18"
127.0.0.1:6379> hmget user:01 name age sex
1) "jack"
2) "18"
3) (nil)
127.0.0.1:6379> hmget user:02 name age
1) (nil)
2) (nil)
(4)hgetall
命令:hgetall key
说明:返回存储在键处的哈希的所有字段(field)和值(value)。在返回的值中,每个字段名称后面都跟着它的值。
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
3) "age"
4) "18"
(5)hdel
命令:hdel key field [field …]
说明:从存储在键处的哈希中删除指定的字段(filed)。将忽略此哈希中不存在的指定字段。若key不存在,它将被视为一个空哈希,并且此命令返回0。
127.0.0.1:6379> hgetall user:02
(empty array)
127.0.0.1:6379> hdel user:02 name age
(integer) 0
127.0.0.1:6379> hdel user:01 age
(integer) 1
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
2、hlen
命令:hlen key
说明:返回存储在键中字段数。
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
127.0.0.1:6379> hlen user:01
(integer) 1
3、hexists
命令:hexists key field
说明:如果字段(field)是存储在键处的哈希中的现有字段,则返回1,字段不存在返回0
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
127.0.0.1:6379> hexists user:01 name
(integer) 1
127.0.0.1:6379> hexists user:01 age
(integer) 0
4、获取字段/获取值
(1)hkeys
命令:hkeys key
说明:返回存储在键处的哈希中的全部字段名
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
3) "age"
4) "18"
127.0.0.1:6379> hkeys user:01
1) "name"
2) "age"
(2)hvals
命令:hvals key
说明: 返回存储在键处的哈希中的所有值。
127.0.0.1:6379> hvals user:01
1) "jack"
2) "18"
5、字段对应值的增加/减少
(1)hincrby
命令:hincrby key field increment
说明:将存储在键处的哈希中的字段处存储的数字递增/减。
127.0.0.1:6379> hvals user:01
1) "jack"
2) "18"
127.0.0.1:6379> hincrby user:01 age -11
(integer) 7
127.0.0.1:6379> hvals user:01
1) "jack"
2) "7"
127.0.0.1:6379> hincrby user:01 age 11
(integer) 18
127.0.0.1:6379> hvals user:01
1) "jack"
2) "18"
若哈希中的key不存在,则会创建一个包含哈希的新key。如果字段(field)不存在,则在执行操作之前将该值设置为0,然后在使用increment参数对其进行增减
127.0.0.1:6379> hincrby user:01 score 11
(integer) 11
127.0.0.1:6379> hgetall user:01
1) "name"
2) "jack"
3) "age"
4) "18"
5) "score"
6) "11"
127.0.0.1:6379> hincrby user:02 score 11
(integer) 11
127.0.0.1:6379> hgetall user:02
1) "score"
2) "11"
(2)hincrbyfloat
命令:hincrbyfloat key field increment
说明:将存储在键处的哈希中的字段处存储的数字递增/减,该字段表示双精度浮点数。
127.0.0.1:6379> hincrbyfloat user:02 score 11.1
"22.1"
127.0.0.1:6379> hgetall user:02
1) "score"
2) "22.1"
127.0.0.1:6379> hincrbyfloat user:02 score -11.2
"10.9"
127.0.0.1:6379> hgetall user:02
1) "score"
2) "10.9"
6、 hsetnx
命令:hsetnx key field value
说明:仅当字段还不存在时,才将存储在键处的哈希中的字段设置为值。若key不存在,则会创建一个包含哈希的新key。如果字段已经存在,则此操作无效。
127.0.0.1:6379> hgetall user:03
(empty array)
127.0.0.1:6379> hsetnx user:03 name user03
(integer) 1
127.0.0.1:6379> hgetall user:03
1) "name"
2) "user03"
127.0.0.1:6379> hsetnx user:02 score 111
(integer) 0
127.0.0.1:6379> hsetnx user:02 age 111
(integer) 1
127.0.0.1:6379> hgetall user:02
1) "score"
2) "10.9"
3) "age"
4) "111"
7、hash类型使用案例
早期的购物车设计
shopcar表示购物车的key,uid001表示用户id,字段(field) 表示商品id,值表示商品数量
新增商品:
127.0.0.1:6379> hset shopcar:uid001 0013 1
(integer) 1
127.0.0.1:6379> hset shopcar:uid001 0024 1
(integer) 1
增加商品数量:
127.0.0.1:6379> hincrby shopcar:uid001 0024 1
(integer) 2
计算商品总数:
127.0.0.1:6379> hlen shopcar:uid001
(integer) 2
选择全部商品:
127.0.0.1:6379> hgetall shopcar:uid001
1) "0013"
2) "1"
3) "0024"
4) "2"
示例图:
文章来源:https://www.toymoban.com/news/detail-743366.html
文章来源地址https://www.toymoban.com/news/detail-743366.html
到了这里,关于redis命令之hash类型操作命令的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!