Redis 哈希hash常用命令总结

Redis中文官网命令大全

hash常用命令汇总

命令语法语义
hsethset key field value设置哈希集key中指定字段field的值为value
hmsethmset key field value [field value …]设置哈希集key中若干指定字段field的值为value
hsetnxhsetnx key field value在哈希集key中不存在字段field时,添加字段field并将其值设为value
hdelhdel key field [field …]从哈希集key中移除指定的若干字段field
hincrbyhincrby key field increment使哈希集key中字段field的值增加increment
hincrbyfloathincrbyfloat key field increment使哈希集key中字段field的float值增加increment
hgethget key field返回哈希集key中字段field的值
hgetallhgetall key返回哈希集key中所有字段和值
hmgethmget key field [field …]返回哈希集key中若干指定字段field的值
hkeyshkeys key返回哈希集key中所有字段的名字
hvalshvals key返回哈希集key中所有字段的值
hlenhlen key返回哈希集key中包含字段的数量
hstrlenhstrlen key field返回哈希集key中字段field的值长度
hexistshexists key field返回哈希集key中字段field是否存在

命令演示

增加命令

hset

使用hset命令设置哈希集key中指定字段field的值为value。

如果哈希集key不存在,会创建一个新的哈希集并与key关联。

如果字段field在哈希集key中存在,它将被重写。

返回值有两种可能:

  • 返回值为0时,表示参数field是一个新的字段。
  • 返回值为1时,表示参数field原来已经再哈希集中存在。

示例如下:

127.0.0.1:6379> hset h1 f1 v1
(integer) 1
127.0.0.1:6379> hset h1 f1 v2
(integer) 0
127.0.0.1:6379> hget h1 f1
"v2"

hmset

使用hmset命令设置哈希集key中若干指定字段field的值为value,本质是hset的复数操作版本。

如果哈希集key不存在,会创建一个新的哈希集并与key关联。

如果任一field此前已经存在与哈希集key中,则重写该字段

示例如下:

127.0.0.1:6379> hmset h1 f1 v1 f2 v2
OK
127.0.0.1:6379> hmset h1 f1 vnew f3 v3
OK
127.0.0.1:6379> hgetall h1
1) "f1"
2) "vnew"
3) "f2"
4) "v2"
5) "f3"
6) "v3"

hsetnx

使用hsetnx命令像哈希集key中添加新的字段field,只有哈希集key中不存在field字段时生效,否则命令无效果。

如果哈希集key不存在,则会创建一个新的哈希集与key关联。

返回值有两种可能:

  • 返回值为0时,表示哈希集key中已经存在字段field,操作没有执行。
  • 返回值为1时,表示哈希集key中已经成功添加新的字段field,并被成功赋值。
    示例如下:
127.0.0.1:6379> hsetnx h1 f1 v1
(integer) 1
127.0.0.1:6379> hsetnx h1 f1 v2
(integer) 0
127.0.0.1:6379> hget h1 f1
"v1"

删除命令

hdel

使用hdel命令从哈希集key中移除指定的若干字段field。哈希集key中不存在任一参数field则忽略该字段。

如果哈希集key不存在,则将其认定为一个空集。

返回值表示从哈希集key中成功移除的字段数量。

示例如下:

127.0.0.1:6379> hmset h1 f1 v1 f2 v2
OK
127.0.0.1:6379> hdel h1 f1 f3
(integer) 1
127.0.0.1:6379> hgetall h1
1) "f2"
2) "v2"

修改命令

hincrby

使用hincrby命令使哈希集key中字段field的值增加increment。

如果哈希集key不存在,会创建一个哈希集并与key管理。

如果指定字段field不存在,则会创建字段field,并在执行增加操作前将其值设为0。

如果字段field对应的值不能作为整数自增,则返回错误。hincrby支持的值范围限定在64位有符号整数。

返回值表示增值操作执行后的字段field的值。

示例如下:

127.0.0.1:6379> hmset h1 f1 1 f2 string
OK
127.0.0.1:6379> hincrby h1 f1 5
(integer) 6
127.0.0.1:6379> hincrby h1 f2 5
(error) ERR hash value is not an integer
127.0.0.1:6379> hincrby h1 f3 5
(integer) 5

hincrbyfloat

使用hincrbyfloat命令使哈希集key中字段field的float值增加increment。规则与hincrby基本相同,只是目标值变成了浮点数。

出现下列两种情况时返回错误:

  • 字段field的值的类型不是字符串类型。
  • 字段field的值或increment不能解析为一个浮点类型。

返回值表示增值操作执行后的字段field的值。

示例如下:

127.0.0.1:6379> hincrbyfloat h1 f1 1.5
"1.5"
127.0.0.1:6379> hincrbyfloat h1 f1 a
(error) ERR value is not a valid float
127.0.0.1:6379> hset h1 f2 a
(integer) 1
127.0.0.1:6379> hincrbyfloat h1 f2 1.5
(error) ERR hash value is not a float

查询命令

hget

使用hget命令返回哈希集key中字段field的值。

当哈希集key或字段field不存在时返回nil。

示例如下:

127.0.0.1:6379> hset h1 f1 v1
(integer) 1
127.0.0.1:6379> hget h1 f1
"v1"
127.0.0.1:6379> hget h2 f1
(nil)
127.0.0.1:6379> hget h1 f2
(nil)

hgetall

使用hgetall命令返回哈希集key中所有字段和值。哈希集key不存在时返回空列表。

返回值中,每个字段明的下一个是该字段关联的值,返回值长度正好是哈希集长度的两倍。

示例如下:

127.0.0.1:6379> hmset h1 f1 vl f2 v2 f3 v3
OK
127.0.0.1:6379> hgetall h1
1) "f1"
2) "vl"
3) "f2"
4) "v2"
5) "f3"
6) "v3"
127.0.0.1:6379> hgetall h2
(empty list or set)

hmget

使用hmget命令返回哈希集key中若干指定字段field的值。

如果任一指定字段field不存在,则返回nil。

如果哈希集key不存在,则返回只含有nil的列表。

示例如下:

127.0.0.1:6379> hmset h1 f1 vl f2 v2 f3 v3
OK
127.0.0.1:6379> hmget h1 f1 f3 f5
1) "vl"
2) "v3"
3) (nil)
127.0.0.1:6379> hmget f2 f1 f2
1) (nil)
2) (nil)

hkeys

使用hkeys命令返回哈希集key中所有字段的名字。

如果哈希集不存在,则返回空列表

示例如下:

127.0.0.1:6379> hmset h1 f1 vl f2 v2 f3 v3
OK
127.0.0.1:6379> hkeys h1
1) "f1"
2) "f2"
3) "f3"
127.0.0.1:6379> hkeys h2
(empty list or set)

hvals

使用hvals命令返回哈希集key中所有字段的值。

如果哈希集key不存在,则返回空列表

示例如下:

127.0.0.1:6379> hmset h1 f1 vl f2 v2 f3 v3
OK
127.0.0.1:6379> hvals h1
1) "vl"
2) "v2"
3) "v3"
127.0.0.1:6379> hvals h2
(empty list or set)

hlen

使用hlen命令返回哈希集key中包含字段的数量。

如果哈希集key不存在时,则返回0

示例如下:

127.0.0.1:6379> hmset h1 f1 vl f2 v2 f3 v3
OK
127.0.0.1:6379> hlen h1
(integer) 3
127.0.0.1:6379> hlen h2
(integer) 0

hstrlen

使用hstrlen命令返回哈希集key中字段field的值长度。

如果哈希集key或者字段field不存在,则返回0

示例如下:

127.0.0.1:6379> hset h1 f1 v1
(integer) 1
127.0.0.1:6379> hstrlen h1 f1
(integer) 2
127.0.0.1:6379> hstrlen h2 f1
(integer) 0
127.0.0.1:6379> hstrlen h1 f2
(integer) 0

hexists

使用hexists命令返回哈希集key中字段field是否存在。

返回值有两种可能:

  • 返回值为0时,表示哈希集key中不存在字段field,或哈希集key不存在。
  • 返回值为1时,表示哈希集key中存在字段field。

示例如下:

127.0.0.1:6379> hset h1 f1 v1
(integer) 1
127.0.0.1:6379> hexists h1 f1
(integer) 1
127.0.0.1:6379> hexists h1 f2
(integer) 0
127.0.0.1:6379> hexists h2 f1
(integer) 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

7rulyL1ar

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值