Zum Hauptinhalt springen

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, maximal 256 Byte).
  • key
    String. Zu ändernder Schlüssel (muss gültiges UTF-8 und nicht leer sein).
  • by
    Integer, optional. Schrittweite; standardmäßig 1, negative Werte sind möglich.
  • init
    Integer, optional. Anfangswert bei fehlendem Schlüssel; standardmäßig 0.
  • min
    Integer, optional. Untergrenze; niedrigere Ergebnisse werden begrenzt.
  • max
    Integer, optional. Obergrenze; höhere Ergebnisse werden begrenzt.
  • coerce
    Boolean, optional. Bei true werden vorhandene Werte, die keine Ganzzahlen sind, auf init zurückgesetzt; Standard ist false.
  • timeout
    Zahl, optional. Anfrage-Timeout in Sekunden, Standard 60.

Rückgabewerte​

  • value
    Zahl. Ergebnis nach der Erhöhung; bei Fehler nil.
  • meta_or_err
    Tabelle oder String. Gibt bei Erfolg Metadaten zurück:
    • created: ob der Schlüssel diesmal erstellt wurde
    • coerced: ob eine Typumwandlung stattgefunden hat
    • clamped: ob der Wert begrenzt wurde
    • clamp_reason: String. Grund der Begrenzung (min/max)
    • original_value: vorheriger numerischer Wert, sofern vorhanden
    • computed_value: Ergebnis vor der Begrenzung
    • result_value: endgültig gespeicherter Wert Gibt bei Fehler eine Fehlerbeschreibung als Zeichenkette zurück.

Hinweise​

Bietet eine threadsichere atomare Zähleroperation.
Verwenden Sie min/max, um den Bereich zu begrenzen, und coerce, um ungültige Werte auf init zurückzusetzen.
Bei einem Fehler gibt der Aufruf nil, 错误信息 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