HINCRBYFLOAT:对字段储存的数字值执行浮点数加法或减法操作
HINCRBYFLOAT
命令的作用和 HINCRBY
命令的作用类似,它们之间的主要区别在于 HINCRBYFLOAT
命令不仅可以使用整数作为增量,还可以使用浮点数作为增量:
- HINCRBYFLOAT hash field increment
HINCRBYFLOAT
命令在成功执行加法操作之后,将返回给定字段的当前值作为结果。
举个例子,通过执行以下 HINCRBYFLOAT
命令,我们可以将 geo::peter
散列 longitude
字段的值从原来的 100.0099647
修改为 113.2099647
:
- redis> HGET geo::peter longitude
- "100.0099647"
- redis> HINCRBYFLOAT geo::peter longitude 13.2 -- 将字段的值加上 13.2
- "113.2099647"
增量和字段值的类型限制
正如之前所说,HINCRBYFLOAT
命令不仅可以使用浮点数作为增量,还可以使用整数作为增量:
- redis> HGET number float
- "3.14"
- redis> HINCRBYFLOAT number float 10086 -- 整数增量
- "10089.13999999999999968"
此外,不仅储存浮点数的字段可以执行 HINCRBYFLOAT
命令,储存整数的字段也一样可以执行 HINCRBYFLOAT
命令:
- redis> HGET number int -- 储存整数的字段
- "100"
- redis> HINCRBYFLOAT number int 2.56
- "102.56"
最后,如果加法计算的结果能够被表示为整数,那么 HINCRBYFLOAT
命令将使用整数作为计算结果:
- redis> HGET number sum
- "1.5"
- redis> HINCRBYFLOAT number sum 3.5
- "5" -- 结果被表示为整数 5
执行减法操作
跟 HINCRBY
命令的情况一样,Redis 也没有为 HINCRBYFLOAT
命令提供对应的减法操作命令,因此如果我们想要对字段储存的数字值执行浮点数减法操作,那么只能通过向 HINCRBYFLOAT
命令传入负值浮点数来实现:
- redis> HGET geo::peter longitude
- "113.2099647"
- redis> HINCRBYFLOAT geo::peter longitude -50 -- 将字段的值减去 50
- "63.2099647"
其他信息
属性 | 值 |
---|---|
复杂度 | O(1) |
版本要求 | HINCRBYFLOAT 命令从 Redis 2.0.0 版本开始可用。 |