snappy: Liens FFI LuaJIT pour Snappy, un compresseur/décompresseur rapide (https://code.google.com/p/snappy/)
Installation
Si vous n'avez pas configuré l'abonnement au dépôt RPM, inscrivez-vous. Ensuite, vous pouvez procéder avec les étapes suivantes.
CentOS/RHEL 7 ou 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-snappy
CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-snappy
Pour utiliser cette bibliothèque Lua avec NGINX, assurez-vous que nginx-module-lua est installé.
Ce document décrit lua-resty-snappy v1.0 publié le 01 octobre 2014.
lua-resty-snappy fournit des liaisons FFI LuaJIT à Snappy, un compresseur/décompresseur rapide (https://code.google.com/p/snappy/).
API Lua
Codes d'erreur
SNAPPY_OK = 0,
SNAPPY_INVALID_INPUT = 1,
SNAPPY_BUFFER_TOO_SMALL = 2
string,len snappy.compress(input)
Compresse input avec l'algorithme Snappy et renvoie les données compressées et sa longueur. En cas d'erreur, cela renverra nil et un code d'erreur.
Exemple
local snappy = require "resty.snappy"
local comp, err = snappy.compress("test")
if comp then
-- faire quelque chose avec les données compressées et la longueur
-- (la longueur est stockée dans la valeur err)...
else
if err = 1 then
print "Entrée invalide"
elseif err == 2 then
print "Taille du tampon trop petite"
end
end
string,len snappy.uncompress(compressed)
Décompresse compressed avec l'algorithme Snappy et renvoie les données décompressées et sa longueur. En cas d'erreur, cela renverra nil et un code d'erreur.
Exemple
local snappy = require "resty.snappy"
local uncomp, err = snappy.uncompress(snappy.compress("test"))
number snappy.max_compressed_length(source_length)
Renvoie la longueur maximale possible en tant que nombre d'octets de données compressées lorsque la longueur non compressée source_length est donnée. Cela est utilisé pour créer un tampon pour la compression, mais peut également être utilisé dans une mesure rapide (et cela peut n'avoir rien à voir avec la longueur finale de la sortie compressée, autre que le fait qu'elle ne peut pas être plus grande que ce que cette fonction renvoie).
Exemple
local snappy = require "resty.snappy"
local number = snappy.max_compressed_length(1000)
number snappy.uncompressed_length(compressed)
C'est un moyen plus rapide (que d'utiliser snappy.uncompress) pour déterminer combien d'octets les données compressées auront lorsqu'elles seront décompressées.
Exemple
local snappy = require "resty.snappy"
local number = snappy.uncompressed_length(snappy.compress("test"))
boolean snappy.validate_compressed_buffer(compressed)
Cela peut être utilisé pour vérifier si les octets compressés sont en fait des octets compressés par Snappy ou autre chose. C'est-à-dire quelque chose qui peut être décompressé avec Snappy.
Exemple
local snappy = require "resty.snappy"
local bool = snappy.validate_compressed_buffer(snappy.compress("test"))
GitHub
Vous pouvez trouver des conseils de configuration supplémentaires et de la documentation pour ce module dans le dépôt GitHub pour nginx-module-snappy.