redis命令之hash类型操作命令

目录

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"

        示例图:

 

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>