Incrementar/decrementar atomicamente (LCC.kvdb.dict.incr)
Declaração
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
Parâmetros
- name
Tipo string; nome do dicionário (não vazio, no máximo256bytes) - key
Tipo string; nome da chave (UTF-8 válido e não vazio) - by
Tipo integer, opcional; passo do incremento/decremento, padrão1, pode ser negativo - init
Tipo integer, opcional; valor inicial quando a chave não existe, padrão0 - min
Tipo integer, opcional; limite inferior do resultado, com contenção quando excedido - max
Tipo integer, opcional; limite superior do resultado, com contenção quando excedido - coerce
Tipo boolean, opcional; quandotrue, redefine à força parainitse o valor antigo não for inteiro, padrãofalse - timeout
Tipo number, opcional; tempo limite da solicitação (em segundos), padrão60
Valor de retorno
- value
Tipo number; resultado depois do incremento, ounilem caso de falha - meta_or_err
Tipo table ou string. Em caso de sucesso, retorna uma table de metadados:created: tipo boolean; indica se a chave foi criada nesta chamadacoerced: tipo boolean; indica se a coerção de tipo foi acionadaclamped: tipo boolean; indica se o resultado foi contidoclamp_reason: tipo string; motivo da contenção (min/max)original_value: tipo number; valor antigo, se existircomputed_value: tipo number; valor calculado de acordo com o passoresult_value: tipo number; valor finalmente gravado Em caso de falha, retorna uma string com a descrição do erro
Descrição
Operação de contador atômica e segura para threads.
Usemin/maxpara limitar o intervalo do resultado ecoercepara redefinir valores antigos inválidos parainit.
Quando a chamada falha, retornanil, 错误信息.
Exemplo
local value, meta = LCC.kvdb.dict.incr("计数器", "重试次数", 1, 0, 0, 5, true)
if value then
LCC.log(1, "当前重试次数", value, meta.clamped and "已达上限" or "")
end