Saltar al contenido principal

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áximo 256 bytes)
  • 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, predeterminado 1; puede ser negativo
  • init
    Tipo entero, opcional; valor inicial cuando la clave no existe, predeterminado 0
  • 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 es true, un valor anterior que no sea entero se restablece forzosamente a init, predeterminado false
  • timeout
    Tipo numérico, opcional; tiempo de espera de la solicitud (segundos), predeterminado 60

Valores devueltos​

  • value
    Tipo numérico; resultado del incremento; nil si falla
  • meta_or_err
    Tipo table o string. Si tiene éxito, devuelve una tabla de metadatos:
    • created: booleano; indica si esta llamada creó la clave
    • coerced: booleano; indica si se forzó la conversión de tipo
    • clamped: booleano; indica si se recortó el resultado
    • clamp_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 paso
    • result_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.
Usa min/max para limitar el intervalo del resultado y coerce para restablecer a init un valor anterior no válido.
Si la llamada falla, devuelve nil, 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