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

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”

Redis命令 - Hashes命令组常用命令_第1张图片
Redis命令 - Hashes命令组常用命令_第2张图片

2、HMSET key field value [field value…]

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

HMSET myhash age 18 sex male

在这里插入图片描述
Redis命令 - Hashes命令组常用命令_第3张图片

3、HSETNX key field value

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

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

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

hsetnx myhash username “lisi”

在这里插入图片描述

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

hsetnx myhash address “china”

Redis命令 - Hashes命令组常用命令_第4张图片

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

Redis命令 - Hashes命令组常用命令_第5张图片

6、HMGET key field [field …]

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

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

hmget myhash username password

Redis命令 - Hashes命令组常用命令_第6张图片

7、HKEYS key

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

hkeys myhash

Redis命令 - Hashes命令组常用命令_第7张图片

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

hkeys myhash1

在这里插入图片描述

8、HEXISTS key field

哈希集里的field是否存在

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

hexists myhash username

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

hexists myhash username1

Redis命令 - Hashes命令组常用命令_第8张图片

9、HLEN key

获取 key 指定的哈希集包含的字段的数量
当key指定的哈希集存在:返回哈希集中字段的数量
当key指定的哈希集不存在:返回 0
Redis命令 - Hashes命令组常用命令_第9张图片

10、HSTRLEN key field

如果hash或者field存在:返回hash指定field的value的字符串长度。zhangsan长度是8
如果hash或者field不存在:返回0.
Redis命令 - Hashes命令组常用命令_第10张图片

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?

例如一张表信息如下

id username password age
1 zhangsan “123456” 18

14.1 用Strings-JSON

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

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

在这里插入图片描述Redis命令 - Hashes命令组常用命令_第11张图片
获取user:1的值
Redis命令 - Hashes命令组常用命令_第12张图片

14.2 用hash

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

在这里插入图片描述
hash,相当于把表的行和列旋转了90度。
Redis命令 - Hashes命令组常用命令_第13张图片
获取值:

Redis命令 - Hashes命令组常用命令_第14张图片

你可能感兴趣的:(Redis,redis,哈希算法,数据库)