Redis HINCRBYFLOAT 命令为哈希表 key 中的域 field 的值加上浮点数增量 increment。增量也可以为负浮点数,相当于对指定域进行减法操作。
如果哈希表中没有域 field,那么 HINCRBYFLOAT 会先将域 field 的值设为 0,然后再执行加法操作。如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field,最后再执行加法操作。
命令格式
HINCRBYFLOAT key field increment
可用版本:>=2.6.0
时间复杂度:O(1)
HINCRBYFLOAT 命令的详细功能和 INCRBYFLOAT 命令类似。
命令返回值
HINCRBYFLOAT 命令返回有 3 种情况:
- 指定 key 不存在时,返回指定的增量。
- 指定 key 存在且指定 field 为浮点数时,返回增量(可以为负数)之后的值。
- 指定的 field 值为非浮点数时,返回一个错误。
示例
redis> HINCRBYFLOAT noexist field 188 # 指定 key 不存在时
"188"
redis> HSET myhash field1 1.88
(integer) 1
redis> HINCRBYFLOAT myhash field1 0.18 # 指定 key 存在且指定 field 为数字时
"2.06"
redis> HINCRBYFLOAT myhash field1 -0.06 # 增量为负数,相当于相减
"2"
redis> HSET myhash field2 suzuki
(integer) 1
redis> HINCRBYFLOAT myhash field2 1 # 指定的 field 值为非浮点数时,返回一个错误
(error) ERR hash value is not a valid float
redis>