HINCRBY:对字段储存的整数值执行加法或减法操作
跟字符串键的 INCRBY
命令一样,如果散列的字段里面储存着能够被 Redis 解释为整数的数字,那么用户就可以使用 HINCRBY
命令为该字段的值加上指定的整数增量:
- HINCRBY hash field increment
HINCRBY
命令在成功执行加法操作之后将返回字段当前的值作为命令的结果。
图 3-10 储存着文章数据的散列
比如说,对于图 3-10 所示的 article::10086
散列,我们可以通过执行以下命令,为 view_count
字段的值加上 1
:
- redis> HINCRBY article::10086 view_count 1
- (integer) 101
也可以通过执行以下命令,为 view_count
字段的值加上 30
:
- redis> HINCRBY article::10086 view_count 30
- (integer) 131
执行减法操作
因为 Redis 只为散列提供了用于执行加法操作的 HINCRBY
命令,但是却并没有为散列提供相应的用于执行减法操作的命令,所以如果用户需要对字段储存的整数值执行减法操作的话,那么他就需要将一个负数增量传给 HINCRBY
命令,从而达到对值执行减法计算的目的。
以下代码展示了如何使用 HINCRBY
命令去对 view_count
字段储存的整数值执行减法计算:
- redis> HGET article::10086 view_count -- 文章现在的浏览次数为 131 次
- "131"
- redis> HINCRBY article::10086 view_count -10 -- 将文章的浏览次数减少 10 次
- "121"
- redis> HINCRBY article::10086 view_count -21 -- 将文章的浏览次数减少 21 次
- "100"
- redis> HGET article::10086 view_count -- 文章现在的浏览次数只有 100 次了
- "100"
处理异常情况
HINCRBY
命令只能对储存着整数值的字段执行,并且用户给定的增量也必须为整数,尝试对非整数值字段执行 HINCRBY
命令,又或者向 HINCRBY
命令提供非整数增量,都会导致 HINCRBY
命令拒绝执行并报告错误。
以下是一些导致 HINCRBY
命令报错的例子:
- redis> HINCRBY article::10086 view_count "fifty" -- 增量必须能够被解释为整数
- (error) ERR value is not an integer or out of range
- redis> HINCRBY article::10086 view_count 3.14 -- 增量不能是浮点数
- (error) ERR value is not an integer or out of range
- redis> HINCRBY article::10086 content 100 -- 尝试向储存字符串值的字段执行 HINCRBY
- (error) ERR hash value is not an integer
其他信息
属性 | 值 |
---|---|
复杂度 | O(1) |
版本要求 | HINCRBY 命令从 Redis 2.0.0 版本开始可用。 |