Redis命令 - Hashes命令组常用命令

发布时间:2024年01月14日

1、HSET key field value

设置 key 指定的哈希集中指定字段的值。

HSET key field value
返回值:1代表field是一个新的字段。0代表field已存在

  • 如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。
  • 如果字段在哈希集中存在,它将被重写。

创建一个type为hash类型的key叫myhash,其指定的哈希集中有两个字段username和password,值分别是zhangsan、123456

hset myhash username “zhangsan”
hset myhash password “123456”

在这里插入图片描述
在这里插入图片描述

2、HMSET key field value [field value…]

接着向myhash的哈希集中再添加两个字段:age和sex

HMSET myhash age 18 sex male

在这里插入图片描述
在这里插入图片描述

3、HSETNX key field value

只在 key 指定的哈希集中不存在指定的字段时,设置字段的值。如果 key 指定的哈希集不存在,会创建一个新的哈希集并与 key 关联。如果字段已存在,该操作无效果。
含义如下
返回值:

1:如果字段是个新的字段,并成功赋值
0:如果哈希集中已存在该字段,没有操作被执行

已存在username字段,因此设置值将不会生效,返回值为0。username的值还是zhangsan

hsetnx myhash username “lisi”

在这里插入图片描述

不存在address字段,因此可以成功设置值,返回值为1。

hsetnx myhash address “china”

在这里插入图片描述

4、HGET key field

查询key指定的哈希集中该字段所关联的值。例如:
1、 获取myhash中的username字段的值,该字段是存在的,返回值即zhangsan

hget myhash username

在这里插入图片描述

2、获取myhash中,phone字段的值,该字段不存在,返回值是null

hget myhash phone

在这里插入图片描述

5、HGETALL key

获取key指定的哈希集中的所有字段和值。返回值中,每个字段名的下一个是它的值,所以返回值的长度是哈希集大小的两倍

hgetall myhash

在这里插入图片描述

6、HMGET key field [field …]

获取key指定的哈希集中的指定字段的值。

示例:查看myhash中username和password的值

hmget myhash username password

在这里插入图片描述

7、HKEYS key

获取key指定的哈希集中的所有字段名
1、当key指定的哈希集存在时,返回字段名列表。

hkeys myhash

在这里插入图片描述

2、当key指定的哈希集不存在时返回空列表。

hkeys myhash1

在这里插入图片描述

8、HEXISTS key field

哈希集里的field是否存在

1、哈希集里存在该field,返回值为1

hexists myhash username

2、哈希集里不存在该field,返回值为0

hexists myhash username1

在这里插入图片描述

9、HLEN key

获取 key 指定的哈希集包含的字段的数量
当key指定的哈希集存在:返回哈希集中字段的数量
当key指定的哈希集不存在:返回 0
在这里插入图片描述

10、HSTRLEN key field

如果hash或者field存在:返回hash指定field的value的字符串长度。zhangsan长度是8
如果hash或者field不存在:返回0.
> hstrlen myhash username

11、HINCRBY key field increment

increment可正可负。

  • 如果 key 不存在,会创建一个新的哈希集并与 key 关联。
  • 如果 key 存在且该字段存在:只要字段值是数字或者纯数字的字符串,就可以被增加指定的值。否则报错。
  • 如果 key 存在但是该字段不存在:则字段的值在该操作执行前被设置为 0
    注:HINCRBY 支持的值的范围限定在 64位 有符号整数

age是18,增加10之后是28。
在这里插入图片描述

12、HINCRBYFLOAT key field increment

increment是float类型

hincrbyfloat myhash age 10.5

在这里插入图片描述

13、HDEL key field [field…]

从 key 指定的哈希集中移除指定的字段。在哈希集中不存在的字段将被忽略。
如果 key 指定的哈希集不存在,它将被认为是一个空的哈希集,将会报错
示例:address字段存在,因此返回1,address1字段不存在,因此被忽略了。
在这里插入图片描述

14、用strings还是hash?

例如一张表信息如下

idusernamepasswordage
1zhangsan“123456”18

14.1 用Strings-JSON

redis中的strings该怎么存储?怎么方便去获取?

set user:1 “{“id”:1, “username”: “zhangsan”, “password”:“123456”, “age”:18}”

在这里插入图片描述在这里插入图片描述
获取user:1的值
在这里插入图片描述

14.2 用hash

hset user:2 id 1 username “zhangsan” password “123456” age 18

在这里插入图片描述
hash,相当于把表的行和列旋转了90度。
在这里插入图片描述
获取值:

在这里插入图片描述

文章来源:https://blog.csdn.net/weixin_44691253/article/details/135571575
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。