Incremento/decremento atómico (LCC.kvdb.dict.incr)
Declaración
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
Parámetros
- name
Tipo string; nombre del diccionario (no vacío, máximo256bytes) - key
Tipo string; nombre de la clave (debe ser UTF-8 válido y no vacío) - by
Tipo entero, opcional; paso de incremento o decremento, predeterminado1; puede ser negativo - init
Tipo entero, opcional; valor inicial cuando la clave no existe, predeterminado0 - min
Tipo entero, opcional; límite inferior del resultado; los valores que lo superen se recortan - max
Tipo entero, opcional; límite superior del resultado; los valores que lo superen se recortan - coerce
Tipo booleano, opcional; si estrue, un valor anterior que no sea entero se restablece forzosamente ainit, predeterminadofalse - timeout
Tipo numérico, opcional; tiempo de espera de la solicitud (segundos), predeterminado60
Valores devueltos
- value
Tipo numérico; resultado del incremento;nilsi falla - meta_or_err
Tipo table o string. Si tiene éxito, devuelve una tabla de metadatos:created: booleano; indica si esta llamada creó la clavecoerced: booleano; indica si se forzó la conversión de tipoclamped: booleano; indica si se recortó el resultadoclamp_reason: string; motivo del recorte (min/max)original_value: numérico; valor anterior (si existía)computed_value: numérico; valor calculado según el pasoresult_value: numérico; valor escrito finalmente Si falla, devuelve una cadena con la descripción del error
Descripción
Operación de contador atómico segura para hilos.
Usamin/maxpara limitar el intervalo del resultado ycoercepara restablecer ainitun valor anterior no válido.
Si la llamada falla, devuelvenil, información_del_error.
Ejemplo
local value, meta = LCC.kvdb.dict.incr("计数器", "重试次数", 1, 0, 0, 5, true)
if value then
LCC.log(1, "当前重试次数", value, meta.clamped and "已达上限" or "")
end