Incrémentation/décrémentation atomique (LCC.kvdb.dict.incr)
Déclaration
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
Paramètres
- name
Type chaîne, nom du dictionnaire (non vide,256octets au maximum) - key
Type chaîne, nom de la clé (UTF-8 valide et non vide) - by
Type entier, facultatif ; pas d'incrémentation ou de décrémentation,1par défaut, peut être négatif - init
Type entier, facultatif ; valeur initiale si la clé n'existe pas,0par défaut - min
Type entier, facultatif ; borne inférieure du résultat, qui est ramené à cette valeur s'il la dépasse - max
Type entier, facultatif ; borne supérieure du résultat, qui est ramené à cette valeur s'il la dépasse - coerce
Type booléen, facultatif ; lorsquetrue, une ancienne valeur non entière est réinitialisée de force àinit,falsepar défaut - timeout
Type numérique, facultatif ; délai d'attente de la demande en secondes,60par défaut
Valeurs de retour
- value
Type numérique, résultat de l'incrémentation ;nilen cas d'échec - meta_or_err
Type table ou chaîne. En cas de succès, renvoie une table de métadonnées :created: booléen, indique si la clé a été créée par cet appelcoerced: booléen, indique si la conversion forcée du type a été déclenchéeclamped: booléen, indique si le résultat a été bornéclamp_reason: chaîne, raison de la borne (min/max)original_value: numérique, ancienne valeur (si elle existait)computed_value: numérique, valeur calculée selon le pasresult_value: numérique, valeur finalement écrite En cas d'échec, renvoie une chaîne décrivant l'erreur
Description
Opération de compteur atomique et sûre vis-à-vis des threads.
minetmaxlimitent l'intervalle du résultat ;coerceréinitialise une ancienne valeur invalide àinit.
En cas d'échec, renvoienil, 错误信息.
Exemple
local value, meta = LCC.kvdb.dict.incr("计数器", "重试次数", 1, 0, 0, 5, true)
if value then
LCC.log(1, "当前重试次数", value, meta.clamped and "已达上限" or "")
end