Redis INCRBYFLOAT 命令用于将 Redis 的 KEY 所储存的值加上浮点数增量 increment 。如果 KEY 不存在,那么 KEY 的值会先被初始化为 0 ,然后再执行 INCRBYFLOAT 操作。
如果值包含错误的类型,或 字符串类型 的值不能表示为数字,那么返回一个错误。如果命令执行成功,那么 key 的值会被更新为执行加法之后的新值,并且新值会以字符串的形式返回给调用者。
无论是 key 的值,还是增量 increment ,都可以使用像 2.0e7 、 3e5 、 90e-2 这样的指数形式来表示,但是,执行 INCRBYFLOAT 命令之后的值总是以同样的形式储存。
无论加法计算所得的浮点数的实际精度有多长,INCRBYFLOAT 的计算结果也最多只能表示小数点的后十七位。
192.168.98.70:6379> INCRBYFLOAT KEY increment
参数 | 作用 |
---|---|
KEY | 需要增加值的 KEY |
increment | 具体增加的值,浮点型。 |
执行命令之后 key 的值。当以下任意一个条件发生时,返回一个错误:
O(1)
>= 2.6.0
当 KEY 不存在时,会被作为 0 处理
# KEY 不存在
192.168.98.70:6379> EXISTS haicoder.net
(integer) 0
192.168.98.70:6379> INCRBYFLOAT haicoder.net 3.14
"3.14"
192.168.98.70:6379> GET haicoder.net
"3.14"
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 EXISTS 命令,判断 haicoder.net 不存在。使用 INCRBYFLOAT 命令,将不存在的 haicoder.net 的值加 3.14 。
最后,使用 GET 命令,获取 haicoder.net 的值为 3.14,说明不存在的 KEY 被 INCRBYFLOAT 操作时当做了 0 处理 。
当 KEY 存在时,会将相应的值加上 increment
# KEY 存在
192.168.98.70:6379> SET haicoder.net 100.01
OK
192.168.98.70:6379> INCRBYFLOAT haicoder.net 3.11
"103.12"
192.168.98.70:6379> INCRBYFLOAT haicoder.net 100.02
"203.14"
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 SET 命令,设置 haicoder.net 的值为 100.01。接着,使用 INCRBYFLOAT 命令,将 haicoder.net 的值加 3.11 ,此时值变成了 103.12。
最后,再次使用 INCRBYFLOAT 命令,将 haicoder.net 的值加 100.02 ,此时值变成了 203.14。
执行 INCRBYFLOAT 之后格式会被改成非指数符号
192.168.98.70:6379> SET haicoder.net 12e-2 OK 192.168.98.70:6379> GET haicoder.net "12e-2" 192.168.98.70:6379> INCRBYFLOAT haicoder.net 0 "0.12" 192.168.98.70:6379> DEL haicoder.net (integer) 1
我们用 SET 设置值为指数形式。执行 INCRBYFLOAT 之后格式会被改成非指数形式。
执行 INCRBYFLOAT 之后格式会被改成非指数符号
192.168.98.70:6379> SET haicoder.net 12e-2 OK 192.168.98.70:6379> INCRBYFLOAT haicoder.net 10e-2 "0.22" 192.168.98.70:6379> GET haicoder.net "0.22" 192.168.98.70:6379> DEL haicoder.net (integer) 1
用 SET 设置值为指数形式。使用 INCRBYFLOAT 传入指数形式的增量。执行 INCRBYFLOAT 之后格式会被改成非指数形式。
当 KEY 为非数值型,会报错
# 非数值型
192.168.98.70:6379> SET haicoder.net Redis
OK
192.168.98.70:6379> INCRBYFLOAT haicoder.net 1.1
(error) ERR value is not a valid float
192.168.98.70:6379> DEL haicoder.net
(integer) 1
使用 SET 命令,设置 haicoder.net 的值为 Redis。使用 INCRBYFLOAT 命令,将 haicoder.net 的值加 1.1 ,此时直接报错。
Redis INCRBYFLOAT 命令用于将 Redis 的 KEY 所储存的值加上浮点数增量 increment 。Redis INCRBYFLOAT 命令语法:
192.168.98.70:6379> INCRBYFLOAT KEY increment