*Redis INCREX 命令

INCREX 对 key 的值执行原子性递增,并可设置或重置过期时间。


*语法

INCREX key increment [EX seconds | PX milliseconds | EXAT timestamp | PXAT milliseconds-timestamp]

*参数说明

参数 类型 必填 说明
key String 键名
increment Integer 增量值
EX Integer 否(四选一) 过期时间(秒)
PX Integer 否(四选一) 过期时间(毫秒)
EXAT Integer 否(四选一) 绝对过期时间戳(秒)
PXAT Integer 否(四选一) 绝对过期时间戳(毫秒)

*返回值

  • Integer:递增后的新值
  • Error:值不是整数或 key 不是 String 类型

*时间复杂度

O(1)

*

*示例

*基本递增

> INCREX counter 1
(integer) 1
> INCREX counter 1
(integer) 2

*递增并设置过期时间

> INCREX visitor 1 EX 3600
(integer) 1
> TTL visitor
(integer) 3600

*常见错误

错误 原因 解决
WRONGTYPE key 不是 String 类型 确认 key 类型为 String
ERR value is not an integer 当前值不是整数 确认值可解析为整数

*最佳实践

  • 适合计数器场景,同时保证计数器不会永久存在
  • 原子性递增和设置过期,避免竞态条件
  • 配合 EX 实现滑动窗口计数器

*FAQ

Q1: INCREX 和 INCR 有什么区别? A: INCREX 在递增的同时可以设置/刷新过期时间。

Q2: key 不存在会怎样? A: 创建 key 并设置值为 increment,同时设置过期时间(如果指定)。

Q3: 过期时间会刷新吗? A: 如果指定了过期选项,每次执行都会重新设置过期时间。