原子自增/自減 (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