HINCRBY:对字段储存的整数值执行加法或减法操作

跟字符串键的 INCRBY 命令一样,如果散列的字段里面储存着能够被 Redis 解释为整数的数字,那么用户就可以使用 HINCRBY 命令为该字段的值加上指定的整数增量:

  1. HINCRBY hash field increment

HINCRBY 命令在成功执行加法操作之后将返回字段当前的值作为命令的结果。


图 3-10 储存着文章数据的散列_images/IMAGE_HINCRBY.png


比如说,对于图 3-10 所示的 article::10086 散列,我们可以通过执行以下命令,为 view_count 字段的值加上 1

  1. redis> HINCRBY article::10086 view_count 1
  2. (integer) 101

也可以通过执行以下命令,为 view_count 字段的值加上 30

  1. redis> HINCRBY article::10086 view_count 30
  2. (integer) 131

执行减法操作

因为 Redis 只为散列提供了用于执行加法操作的 HINCRBY 命令,但是却并没有为散列提供相应的用于执行减法操作的命令,所以如果用户需要对字段储存的整数值执行减法操作的话,那么他就需要将一个负数增量传给 HINCRBY 命令,从而达到对值执行减法计算的目的。

以下代码展示了如何使用 HINCRBY 命令去对 view_count 字段储存的整数值执行减法计算:

  1. redis> HGET article::10086 view_count -- 文章现在的浏览次数为 131
  2. "131"
  3.  
  4. redis> HINCRBY article::10086 view_count -10 -- 将文章的浏览次数减少 10
  5. "121"
  6.  
  7. redis> HINCRBY article::10086 view_count -21 -- 将文章的浏览次数减少 21
  8. "100"
  9.  
  10. redis> HGET article::10086 view_count -- 文章现在的浏览次数只有 100 次了
  11. "100"

处理异常情况

HINCRBY 命令只能对储存着整数值的字段执行,并且用户给定的增量也必须为整数,尝试对非整数值字段执行 HINCRBY 命令,又或者向 HINCRBY 命令提供非整数增量,都会导致 HINCRBY 命令拒绝执行并报告错误。

以下是一些导致 HINCRBY 命令报错的例子:

  1. redis> HINCRBY article::10086 view_count "fifty" -- 增量必须能够被解释为整数
  2. (error) ERR value is not an integer or out of range
  3.  
  4. redis> HINCRBY article::10086 view_count 3.14 -- 增量不能是浮点数
  5. (error) ERR value is not an integer or out of range
  6.  
  7. redis> HINCRBY article::10086 content 100 -- 尝试向储存字符串值的字段执行 HINCRBY
  8. (error) ERR hash value is not an integer

其他信息

属性
复杂度O(1)
版本要求HINCRBY 命令从 Redis 2.0.0 版本开始可用。