Redis HINCRBY命令

Redis HINCRBY命令教程

Redis 的 HINCRBY 命令用于为 哈希表 KEY 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。

如果 KEY 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。

对一个储存 字符串 值的域 field 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。

Redis HINCRBY命令详解

语法

192.168.98.70:6379> HINCRBY KEY field increment

参数

参数 描述
KEY 要增加的 HASH 的键。
field 要增加的 HASH 的域。
increment 要增加的 HASH 的具体的值。

返回值

执行 HINCRBY 命令之后,哈希表 KEY 中域 field 的值。

时间复杂度

O(1)

可用版本

>= 2.0.0

案例

FIELD不存在

当 FIELD 不存在时,当做 0 处理

192.168.98.70:6379> HEXISTS haicoder weight (integer) 0 192.168.98.70:6379> HINCRBY haicoder weight 200 (integer) 200 192.168.98.70:6379> HGET haicoder weight "200" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 HEXISTS 命令,判断键 haidcoder 的 weight 字段不存在。接着,使用 HINCRBY 命令,对不存在的键 haidcoder 的 weight 字段执行 HINCRBY 操作,返回了 200。

最后,我们使用 HGET 命令获取键 haicoder 的 weight 字段的值为 200,说明不存在的字段被当做了 0 处理。

FIELD存在

当 FIELD 存在时,会被增加对应的值

192.168.98.70:6379> HSET haicoder weight 100 (integer) 1 192.168.98.70:6379> HINCRBY haicoder weight 200 (integer) 300 192.168.98.70:6379> HGET haicoder weight "300" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 HSET 命令,设置键 haidcoder 的 weight 字段的值为 100。接着,使用 HINCRBY 命令,对存在的键 haidcoder 的 weight 字段执行 HINCRBY 操作,返回了 300。

最后,我们使用 HGET 命令获取键 haicoder 的 weight 字段的值为 300,即键 haicoder 的 weight 字段被增加了 200。

increment负数

当 increment 为负数时,对应值会被减去 increment

192.168.98.70:6379> HSET haicoder weight 100 (integer) 1 192.168.98.70:6379> HINCRBY haicoder weight -200 (integer) -100 192.168.98.70:6379> HGET haicoder weight "-100" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 HSET 命令,设置键 haidcoder 的 weight 字段的值为 100。接着,使用 HINCRBY 命令,对存在的键 haidcoder 的 weight 字段执行 HINCRBY 操作,返回了 -100。

最火,我们使用 HGET 命令获取键 haicoder 的 weight 字段的值为 -100,即键 haicoder 的 weight 字段被减去了 200。

FIELD为非数字型

当 FIELD 为非数字型时,返回错误

192.168.98.70:6379> HSET haicoder site haicoder.net (integer) 1 192.168.98.70:6379> HINCRBY haicoder site 100 (error) ERR hash value is not an integer 192.168.98.70:6379> HGET haicoder site "haicoder.net" 192.168.98.70:6379> DEL haicoder (integer) 1

我们首先,使用 HSET 命令,设置键 haidcoder 的 site 字段的值为 haicoder.net。接着,使用 HINCRBY 命令,对存在的键 haidcoder 的 site 字段执行 HINCRBY 操作,返回错误,因为 site 字段为非数字型。

最后,我们使用 HGET 命令获取键 haicoder 的 site 字段的值为 haicoder.net,即 HINCRBY 命令执行失败,原来的字段值保持不变。

Redis HINCRBY命令总结

Redis 的 HINCRBY 命令用于为哈希表 KEY 中的域 field 的值加上增量 increment 。Redis HINCRBY 命令语法:

192.168.98.70:6379> HINCRBY KEY field increment