- 用法
-
INCRBYFLOAT key increment
- 复杂度
- O(1)
- 起始版本
- 2.6.0
- ACL 类别
- @string, @write, @fast
key
中包含错误类型的值(不是字符串)。- 当前的
key
内容或指定的增量值无法解析为双精度浮点数。
将存储在 key
中的字符串表示的浮点数按指定的 increment
值进行增量操作。如果使用负数的 increment
值,则结果是 key
中存储的值将递减(根据加法的明显特性)。如果 key
不存在,则在执行操作前将其设置为 0
。如果发生以下任何情况,将返回错误:
如果命令成功,新的增量值将作为 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
的值。