counter: Lockfreier Zähler für nginx-module-lua
Installation
Wenn Sie das RPM-Repository-Abonnement noch nicht eingerichtet haben, melden Sie sich an. Danach können Sie mit den folgenden Schritten fortfahren.
CentOS/RHEL 7 oder Amazon Linux 2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install lua-resty-counter
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-counter
Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.
Dieses Dokument beschreibt lua-resty-counter v0.2.1, das am 09. April 2020 veröffentlicht wurde.
Wenn die Anzahl der Worker steigt, wird die Strafe für das Erwerben eines Locks spürbar. Diese Bibliothek implementiert einen lockfreien Zähler, der die Inkrementierungsoperation in der Lua-VM des Workers durchführt. Jeder Worker synchronisiert dann seinen lokalen Zähler rechtzeitig mit einem gemeinsamen Dictionary.
API
counter.new
syntax: c, err = counter.new(shdict_name, sync_interval?)
Erstellt eine neue Zählerinstanz. Nimmt das erste Argument als den Namen des gemeinsamen Dictionaries in Form eines Strings. Und ein optionales zweites Argument als Intervall, um den lokalen Zustand in einer Zahl mit dem gemeinsamen Dictionary zu synchronisieren. Wenn das zweite Argument weggelassen wird, wird der lokale Zähler nicht automatisch synchronisiert; der Benutzer ist dafür verantwortlich, counter:sync in jedem Worker aufzurufen.
counter.sync
syntax: ok = counter:sync()
Synchronisiert den lokalen Zähler des aktuellen Workers mit dem gemeinsamen Dictionary. Nicht erforderlich, wenn ein Zähler mit sync_interval, der nicht auf nil gesetzt ist, erstellt wurde.
counter.incr
syntax: counter:incr(key, step?)
Erhöht den Zähler des Schlüssels k um einen Schritt von step. Wenn step weggelassen wird, beträgt der Standardwert 1.
counter.reset
syntax: newval, err, forcible? = counter:reset(key, number)
Setzt den Zähler im shdict mit einer Verringerung von number zurück. Diese Funktion ist ein Wrapper von ngx.shared.DICT:incr(key, -number, number), bitte beziehen Sie sich auf die lua-nginx-module-Dokumentation für Rückgabewerte.
counter.get
syntax: value = counter:get(key)
Holt den Wert des Zählers aus dem gemeinsamen Dictionary.
counter.get_keys
syntax: keys = counter:get_keys(max_count?)
Holt die Schlüssel der Zähler im gemeinsamen Dictionary. Diese Funktion ist ein Wrapper von ngx.shared.DICT:get_keys, bitte beziehen Sie sich auf die lua-nginx-module-Dokumentation für Rückgabewerte.
Siehe auch
GitHub
Sie finden zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-counter.