Saltar a contenido

counter: Contador sin bloqueo para nginx-module-lua

Instalación

Si no has configurado la suscripción al repositorio RPM, regístrate. Luego puedes proceder con los siguientes pasos.

CentOS/RHEL 7 o 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

Para usar esta biblioteca Lua con NGINX, asegúrate de que nginx-module-lua esté instalado.

Este documento describe lua-resty-counter v0.2.1 lanzado el 09 de abril de 2020.


Cuando el número de trabajadores aumenta, la penalización de adquirir un bloqueo se vuelve notable. Esta biblioteca implementa un contador sin bloqueo que realiza la operación de incremento en la VM Lua del trabajador. Cada trabajador sincroniza su contador local con un diccionario compartido a tiempo.

API

counter.new

sintaxis: c, err = counter.new(shdict_name, sync_interval?)

Crea una nueva instancia de contador. Toma el primer argumento como el nombre del diccionario compartido en forma de cadena. Y un segundo argumento opcional como el intervalo para sincronizar el estado local con el diccionario compartido en número. Si se omite el segundo argumento, el contador local no se sincronizará automáticamente, el usuario es responsable de llamar a counter:sync en cada trabajador.

counter.sync

sintaxis: ok = counter:sync()

Sincroniza el contador local del trabajador actual con el diccionario compartido. No es necesario si un contador es creado con sync_interval no establecido en nil.

counter.incr

sintaxis: counter:incr(key, step?)

Aumenta el contador de la clave k con un paso de step. Si se omite step, por defecto es 1.

counter.reset

sintaxis: newval, err, forcible? = counter:reset(key, number)

Restablece el contador en el diccionario compartido con una disminución de number. Esta función es un envoltorio de ngx.shared.DICT:incr(key, -number, number), por favor consulta la documentación de lua-nginx-module para los valores de retorno.

counter.get

sintaxis: value = counter:get(key)

Obtiene el valor del contador del diccionario compartido.

counter.get_keys

sintaxis: keys = counter:get_keys(max_count?)

Obtiene las claves de los contadores en el diccionario compartido. Esta función es un envoltorio de ngx.shared.DICT:get_keys, por favor consulta la documentación de lua-nginx-module para los valores de retorno.

Ver También

GitHub

Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-counter.