INCRBYFLOAT

用法
INCRBYFLOAT key increment
复杂度
O(1)
起始版本
2.6.0
ACL 类别
@string, @write, @fast

将存储在 key 中的字符串表示的浮点数按指定的 increment 值进行增量操作。如果使用负数的 increment 值,则结果是 key 中存储的值将递减(根据加法的明显特性)。如果 key 不存在,则在执行操作前将其设置为 0。如果发生以下任何情况,将返回错误:

  • key 中包含错误类型的值(不是字符串)。
  • 当前的 key 内容或指定的增量值无法解析为双精度浮点数。

如果命令成功,新的增量值将作为 key 的新值存储(替换旧值),并作为字符串返回给调用者。

字符串 key 中已包含的值和增量参数都可以选择以指数表示法提供,但是,增量操作后计算的值将始终以相同的格式存储,即一个整数,后跟(如果需要)一个点,以及表示数字小数部分的位数不定的数字。末尾的零总是被移除。

无论实际内部计算精度如何,输出精度都固定为小数点后 17 位。

示例

127.0.0.1:6379> SET mykey 10.50
OK
127.0.0.1:6379> INCRBYFLOAT mykey 0.1
"10.6"
127.0.0.1:6379> INCRBYFLOAT mykey -5
"5.6"
127.0.0.1:6379> SET mykey 5.0e3
OK
127.0.0.1:6379> INCRBYFLOAT mykey 2.0e2
"5200"

实现细节

该命令始终以 SET 操作的形式在复制链接和 AOF (Append Only File) 文件中传播,以避免底层浮点数数学实现差异导致不一致。

RESP2/RESP3 回复

批量字符串回复:增量操作后 key 的值。