原子自增/自减 (LCC.kvdb.dict.incr)
声明
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
参数
- name
字符串型,词典名称(非空,最长256字节) - key
字符串型,键名(必须为合法 UTF-8,且非空) - by
整数型,可选;增减步长,默认1,可为负数 - init
整数型,可选;键不存在时的初始值,默认0 - min
整数型,可选;结果下限,超出时会被钳制 - max
整数型,可选;结果上限,超出时会被钳制 - coerce
布尔型,可选;为true时遇到非整数旧值会强制重置为init,默认false - timeout
数值型,可选;请求超时时间(秒),默认60
返回值
- value
数值型,自增后的结果;失败时为nil - meta_or_err
表类型或字符串。成功时返回元信息表:created:布尔型,本次是否新建键coerced:布尔型,是否触发类型强制clamped:布尔型,结果是否被钳制clamp_reason:字符串,钳制原因(min/max)original_value:数值型,旧值(若存在)computed_value:数值型,按步长计算后的值result_value:数值型,最终写入值 失败时返回错误描述字符串
说明
线程安全的原子计数器操作。
通过min/max可以限制结果区间,coerce用于将非法旧值重置为init。
调用失败时返回nil, 错误信息。
示例
local value, meta = LCC.kvdb.dict.incr("计数器", "重试次数", 1, 0, 0, 5, true)
if value then
LCC.log(1, "当前重试次数", value, meta.clamped and "已达上限" or "")
end