首页/数据/数据库速查/HINCRBY / HINCRBYFLOAT 字段级原子计数
Redis 命令96 条

HINCRBY / HINCRBYFLOAT 字段级原子计数

在 Hash 字段上原子加减:适合按对象维度统计(用户积分、商品维度销量);字段不存在按 0 起算。

数据库速查数据更新于 2026-10-13

字段级原子计数是什么

在哈希的某个字段上做原子加减:适合按对象维度累计统计,例如用户积分、商品维度的销量、各状态计数。字段不存在时按零起算,命令返回加完之后的数值,因此可以一次调用同时完成累加与读取。

基本信息

整数计数HINCRBY 键 字段 增量,增量可为负数
浮点计数HINCRBYFLOAT 键 字段 增量,存在浮点精度边界
返回操作后的新值(字符串形式)
初始值字段不存在时按 0 处理,不影响其他字段
错误场景对非整数内容执行整数自增会报错

典型使用场景

  • 用户行为统计:按用户维度统计浏览、点赞、分享次数
  • 商品维度计数:同一商品的多类指标放在一个哈希里一次取出
  • 库存与配额:整数字段做加减,配合业务校验控制超卖
  • 状态汇总:把不同状态的计数集中在一个键里,便于汇总展示
  • 日报临时聚合:临时键计数并设置过期,避免长期堆积

示例

示例
HINCRBY stat:u1001 pv 1              # 首次计数,返回 1
HINCRBY stat:u1001 pv 10             # 累加,返回 11
HINCRBY stat:u1001 pv -3             # 支持负数,返回 8
HINCRBYFLOAT stat:u1001 amount 9.9   # 浮点累加,返回 9.9
HGET stat:u1001 pv                   # 读取单字段
HGETALL stat:u1001                   # 一次性取出全部计数
EXPIRE stat:u1001 604800             # 给统计键设置过期,避免长期堆积

输出逐列读法

返回含义注意
整数或数字字符串累加后的新值可直接用于阈值判断
浮点字符串浮点累加结果不宜做金额精确统计
错误字段内容不是整数对已存字符串的字段做整数自增会失败
类型错误键不是哈希结构键类型被其他命令写成字符串时冲突
多个计数放在同一个哈希里便于一次取出全部指标;但数量过多会让哈希从紧凑编码退化为哈希表编码,内存开销上升。
金额类统计不要用浮点累加:反复相加会累积误差,存整数分并自行换算更稳。

易错点

  • 对不存在的键计数后不设过期:临时统计键长期堆积,内存缓慢上涨
  • 用浮点字段做金额统计:多次累加后出现分位误差,对账不平
  • 对已存非数字内容的字段执行整数自增:命令直接报错,业务中断
  • 把超大量字段塞进一个哈希:编码退化后内存开销明显上升,也成为大键隐患

数据来源与参考

  • Redis 官方文档: HINCRBY
  • Redis 官方文档: HINCRBYFLOAT

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌