Zum Inhalt

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.