*Redis HINCRBYFLOAT 命令
对 Hash 中指定 field 的浮点数值做增量添加。
*语法
HINCRBYFLOAT key field increment
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | Hash 的键名 |
| field | String | 是 | 字段名 |
| increment | Double | 是 | 浮点增量,可为负数 |
*返回值
| 条件 | 返回值 |
|---|---|
| 递增成功 | 返回新的 value(String,浮点数字符串) |
| field 不存在 | 先设为 0.0 再递增 |
*时间复杂度
O(1)
*
*示例
> HSET product:1001 price 19.99
(integer) 1
> HINCRBYFLOAT product:1001 price 5.00
"24.99"
> HINCRBYFLOAT product:1001 price -2.50
"22.49"
# field 不存在
> HINCRBYFLOAT product:1001 discount 0.1
"0.1"
*常见错误
- field 值非数字:返回错误。
*最佳实践
- 价格/金额计算:存储商品金额、用户余额等浮点数值,原子增减。
- 精度问题:浮点数有精度限制,金额计算建议用整数分(如 1999 代表 19.99 元),用 HINCRBY。
*FAQ
Q: HINCRBYFLOAT 和 HINCRBY 有什么区别? A: HINCRBYFLOAT 操作浮点数;HINCRBY 操作整数。
Q: 浮点数精度问题怎么解决? A: 金额等精确计算建议用整数存储(如分),避免浮点误差。