HINCRBYFLOAT:对字段储存的数字值执行浮点数加法或减法操作

HINCRBYFLOAT 命令的作用和 HINCRBY 命令的作用类似,它们之间的主要区别在于 HINCRBYFLOAT 命令不仅可以使用整数作为增量,还可以使用浮点数作为增量:

  1. HINCRBYFLOAT hash field increment

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

举个例子,通过执行以下 HINCRBYFLOAT 命令,我们可以将 geo::peter 散列 longitude 字段的值从原来的 100.0099647 修改为 113.2099647

  1. redis> HGET geo::peter longitude
  2. "100.0099647"
  3.  
  4. redis> HINCRBYFLOAT geo::peter longitude 13.2 -- 将字段的值加上 13.2
  5. "113.2099647"

增量和字段值的类型限制

正如之前所说,HINCRBYFLOAT 命令不仅可以使用浮点数作为增量,还可以使用整数作为增量:

  1. redis> HGET number float
  2. "3.14"
  3.  
  4. redis> HINCRBYFLOAT number float 10086 -- 整数增量
  5. "10089.13999999999999968"

此外,不仅储存浮点数的字段可以执行 HINCRBYFLOAT 命令,储存整数的字段也一样可以执行 HINCRBYFLOAT 命令:

  1. redis> HGET number int -- 储存整数的字段
  2. "100"
  3.  
  4. redis> HINCRBYFLOAT number int 2.56
  5. "102.56"

最后,如果加法计算的结果能够被表示为整数,那么 HINCRBYFLOAT 命令将使用整数作为计算结果:

  1. redis> HGET number sum
  2. "1.5"
  3.  
  4. redis> HINCRBYFLOAT number sum 3.5
  5. "5" -- 结果被表示为整数 5

执行减法操作

HINCRBY 命令的情况一样,Redis 也没有为 HINCRBYFLOAT 命令提供对应的减法操作命令,因此如果我们想要对字段储存的数字值执行浮点数减法操作,那么只能通过向 HINCRBYFLOAT 命令传入负值浮点数来实现:

  1. redis> HGET geo::peter longitude
  2. "113.2099647"
  3.  
  4. redis> HINCRBYFLOAT geo::peter longitude -50 -- 将字段的值减去 50
  5. "63.2099647"

其他信息

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