Atomar erhöhen/verringern (LCC.kvdb.dict.incr)
Deklaration
value, meta_or_err = LCC.kvdb.dict.incr(name, key, by?, init?, min?, max?, coerce?, timeout?)
Parameter
- name
String. Wörterbuchname (nicht leer, maximal256Byte). - key
String. Zu ändernder Schlüssel (muss gültiges UTF-8 und nicht leer sein). - by
Integer, optional. Schrittweite; standardmäßig1, negative Werte sind möglich. - init
Integer, optional. Anfangswert bei fehlendem Schlüssel; standardmäßig0. - min
Integer, optional. Untergrenze; niedrigere Ergebnisse werden begrenzt. - max
Integer, optional. Obergrenze; höhere Ergebnisse werden begrenzt. - coerce
Boolean, optional. Beitruewerden vorhandene Werte, die keine Ganzzahlen sind, aufinitzurückgesetzt; Standard istfalse. - timeout
Zahl, optional. Anfrage-Timeout in Sekunden, Standard60.
Rückgabewerte
- value
Zahl. Ergebnis nach der Erhöhung; bei Fehlernil. - meta_or_err
Tabelle oder String. Gibt bei Erfolg Metadaten zurück:created: ob der Schlüssel diesmal erstellt wurdecoerced: ob eine Typumwandlung stattgefunden hatclamped: ob der Wert begrenzt wurdeclamp_reason: String. Grund der Begrenzung (min/max)original_value: vorheriger numerischer Wert, sofern vorhandencomputed_value: Ergebnis vor der Begrenzungresult_value: endgültig gespeicherter Wert Gibt bei Fehler eine Fehlerbeschreibung als Zeichenkette zurück.
Hinweise
Bietet eine threadsichere atomare Zähleroperation.
Verwenden Siemin/max, um den Bereich zu begrenzen, undcoerce, um ungültige Werte aufinitzurückzusetzen.
Bei einem Fehler gibt der Aufrufnil, 错误信息mit einer Fehlerzeichenkette zurück.
Beispiel
local value, meta = LCC.kvdb.dict.incr("计数器", "重试次数", 1, 0, 0, 5, true)
if value then
LCC.log(1, "当前重试次数", value, meta.clamped and "已达上限" or "")
end