Redis 的 HINCRBY 命令用于为 哈希表 KEY 中的域 field 的值加上增量 increment 。增量也可以为负数,相当于对给定域进行减法操作。
如果 KEY 不存在,一个新的哈希表被创建并执行 HINCRBY 命令。如果域 field 不存在,那么在执行命令前,域的值被初始化为 0 。
对一个储存 字符串 值的域 field 执行 HINCRBY 命令将造成一个错误。本操作的值被限制在 64 位(bit)有符号数字表示之内。
192.168.98.70:6379> HINCRBY KEY field increment
参数 | 描述 |
---|---|
KEY | 要增加的 HASH 的键。 |
field | 要增加的 HASH 的域。 |
increment | 要增加的 HASH 的具体的值。 |
执行 HINCRBY 命令之后,哈希表 KEY 中域 field 的值。
O(1)
>= 2.0.0
当 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 存在时,会被增加对应的值
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
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 为非数字型时,返回错误
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 命令用于为哈希表 KEY 中的域 field 的值加上增量 increment 。Redis HINCRBY 命令语法:
192.168.98.70:6379> HINCRBY KEY field increment