扫码一下
查看教程更方便
Redis Incrbyfloat 命令为 key 中所储存的值加上指定的浮点数增量值。
如果 key 不存在,那么 INCRBYFLOAT 会先将 key 的值设为 0 ,再执行加法操作。
如果命令执行成功, 那么键 key 的值会被更新为执行加法计算之后的新值, 并且新值会以字符串的形式返回给调用者。
无论是键 key 的值还是增量 increment , 都可以使用像 2.0e7
、 3e5
、 90e-2
那样的指数符号(exponential notation)来表示, 但是, 执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存, 也即是, 它们总是由一个数字, 一个(可选的)小数点和一个任意长度的小数部分组成(比如 3.14
、 69.768
,诸如此类), 小数部分尾随的 0 会被移除, 如果可能的话, 命令还会将浮点数转换为整数(比如 3.0 会被保存成 3 )。
此外, 无论加法计算所得的浮点数的实际精度有多长, INCRBYFLOAT 命令的计算结果最多只保留小数点的后十七位。
当以下任意一个条件发生时, 命令返回一个错误:
redis Incrbyfloat 命令基本语法如下:
redis 127.0.0.1:6379> INCRBYFLOAT KEY_NAME INCR_AMOUNT
>= 2.6.0
执行命令之后 key 的值。
# 值和增量都不是指数符号
redis 127.0.0.1:6379> SET jiyikey 10.50
OK
redis 127.0.0.1:6379> INCRBYFLOAT jiyikey 0.1
"10.6"
# 值和增量都是指数符号
redis 127.0.0.1:6379> SET jiyikey 314e-2
OK
redis 127.0.0.1:6379> GET jiyikey # 用 SET 设置的值可以是指数符号
"314e-2"
redis 127.0.0.1:6379> INCRBYFLOAT jiyikey 0 # 但执行 INCRBYFLOAT 之后格式会被改成非指数符号
"3.14"
# 可以对整数类型执行
redis 127.0.0.1:6379> SET jiyikey 3
OK
redis 127.0.0.1:6379> INCRBYFLOAT jiyikey 1.1
"4.1"
# 后跟的 0 会被移除
redis 127.0.0.1:6379> SET jiyikey 3.0
OK
redis 127.0.0.1:6379> GET jiyikey # SET 设置的值小数部分可以是 0
"3.0"
redis 127.0.0.1:6379> INCRBYFLOAT jiyikey 1.000000000000000000000 # 但 INCRBYFLOAT 会将无用的 0 忽略掉,有需要的话,将浮点变为整数
"4"
redis 127.0.0.1:6379> GET jiyikey
"4"
INCRBYFLOAT 命令的时间复杂度:O(1)