首页/数据/Redis 进阶速查/计数器设计:INCR 与热点分摊
数据结构与选型42 条

计数器设计:INCR 与热点分摊

INCR/INCRBY 是原子计数基础;单键计数在集群中天然集中在一个分片,高并发计数可拆成多个子键再求和,或改用 Hash 把维度合并进一个键。

Redis 进阶速查数据更新于 2026-10-12
基础INCR key / INCRBY key n
分片计数INCR counter:{n} 后 MGET 求和
过期计数键搭配 EXPIRE 控制生命周期

示例

示例
redis-cli INCR page:view:home
redis-cli EXPIRE page:view:home 86400
redis-cli INCR page:view:home:0
redis-cli INCR page:view:home:1
redis-cli MGET page:view:home:0 page:view:home:1
整数值的 String 用 int 编码存储,计数器非常省内存;INCR 溢出按 64 位有符号整数回绕,需要上限保护时用 Lua 比较后写入。

易错点

  • 给未设置 TTL 的计数键补 EXPIRE 前先确认它是纯计数键,误覆盖业务键的过期时间会引发故障
  • 热点单键在分片集群里是单节点负载,分片计数求和存在一致性窗口

数据来源与参考

  • Redis 官方文档:INCR / INCRBY 命令
  • Redis 官方文档:Key 过期时间相关命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌