HINCRBYFLOAT

HINCRBYFLOAT key field increment

为哈希表 key 中的域 field 加上浮点数增量 increment

如果哈希表中没有域 field ,那么 HINCRBYFLOAT 会先将域 field 的值设为 0 ,然后再执行加法操作。

如果键 key 不存在,那么 HINCRBYFLOAT 会先创建一个哈希表,再创建域 field ,最后再执行加法操作。

当以下任意一个条件发生时,返回一个错误:

  • field 的值不是字符串类型(因为 redis 中的数字和浮点数都以字符串的形式保存,所以它们都属于字符串类型)

  • field 当前的值或给定的增量 increment 不能解释(parse)为双精度浮点数(double precision floating point number)

HINCRBYFLOAT 命令的详细功能和 INCRBYFLOAT key increment 命令类似,请查看 INCRBYFLOAT key increment 命令获取更多相关信息。

  • 可用版本:
  • >= 2.6.0

  • 时间复杂度:

  • O(1)

  • 返回值:

  • 执行加法操作之后 field 域的值。
  1. # 值和增量都是普通小数
  2.  
  3. redis> HSET mykey field 10.50
  4. (integer) 1
  5. redis> HINCRBYFLOAT mykey field 0.1
  6. "10.6"
  7.  
  8.  
  9. # 值和增量都是指数符号
  10.  
  11. redis> HSET mykey field 5.0e3
  12. (integer) 0
  13. redis> HINCRBYFLOAT mykey field 2.0e2
  14. "5200"
  15.  
  16.  
  17. # 对不存在的键执行 HINCRBYFLOAT
  18.  
  19. redis> EXISTS price
  20. (integer) 0
  21. redis> HINCRBYFLOAT price milk 3.5
  22. "3.5"
  23. redis> HGETALL price
  24. 1) "milk"
  25. 2) "3.5"
  26.  
  27.  
  28. # 对不存在的域进行 HINCRBYFLOAT
  29.  
  30. redis> HGETALL price
  31. 1) "milk"
  32. 2) "3.5"
  33. redis> HINCRBYFLOAT price coffee 4.5 # 新增 coffee 域
  34. "4.5"
  35. redis> HGETALL price
  36. 1) "milk"
  37. 2) "3.5"
  38. 3) "coffee"
  39. 4) "4.5"