Zum Inhalt

snappy: LuaJIT FFI-Bindings für Snappy, einen schnellen Kompressor/Dekompressor (https://code.google.com/p/snappy/)

Installation

Wenn Sie noch kein RPM-Repository-Abonnement eingerichtet haben, melden Sie sich an. Dann 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-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

Um diese Lua-Bibliothek mit NGINX zu verwenden, stellen Sie sicher, dass nginx-module-lua installiert ist.

Dieses Dokument beschreibt lua-resty-snappy v1.0, das am 01. Oktober 2014 veröffentlicht wurde.


lua-resty-snappy bietet LuaJIT FFI-Bindings für Snappy, einen schnellen Kompressor/Dekompressor (https://code.google.com/p/snappy/).

Lua API

Fehlercodes

  SNAPPY_OK               = 0,
  SNAPPY_INVALID_INPUT    = 1,
  SNAPPY_BUFFER_TOO_SMALL = 2

string,len snappy.compress(input)

Komprimiert input mit dem Snappy-Algorithmus und gibt die komprimierten Daten und deren Länge zurück. Im Fehlerfall wird nil und ein Fehlercode zurückgegeben.

Beispiel
local snappy    = require "resty.snappy"
local comp, err = snappy.compress("test")
if comp then
    -- etwas mit den komprimierten Daten und der Länge machen
    -- (Länge wird im err-Wert gespeichert)...
else
    if err == 1 then
        print "Ungültige Eingabe"
    elseif err == 2 then
        print "Puffer zu klein"
    end
end

string,len snappy.uncompress(compressed)

Dekomprimiert compressed mit dem Snappy-Algorithmus und gibt die dekomprimierten Daten und deren Länge zurück. Im Fehlerfall wird nil und ein Fehlercode zurückgegeben.

Beispiel
local snappy      = require "resty.snappy"
local uncomp, err = snappy.uncompress(snappy.compress("test"))

number snappy.max_compressed_length(source_length)

Gibt die maximal mögliche Länge als Anzahl von Bytes der komprimierten Daten zurück, wenn die dekomprimierte source_length angegeben ist. Dies wird verwendet, um einen Puffer für die Komprimierung zu erstellen, kann aber auch für schnelle Messungen verwendet werden (und es kann nichts mit der endgültigen komprimierten Ausgabelänge zu tun haben, außer dass sie nicht größer sein kann als das, was diese Funktion zurückgibt).

Beispiel
local snappy = require "resty.snappy"
local number = snappy.max_compressed_length(1000)

number snappy.uncompressed_length(compressed)

Dies ist eine schnellere Methode (als die Verwendung von snappy.uncompress), um zu bestimmen, wie viele Bytes die komprimierten Daten haben werden, wenn sie dekomprimiert werden.

Beispiel
local snappy = require "resty.snappy"
local number = snappy.uncompressed_length(snappy.compress("test"))

boolean snappy.validate_compressed_buffer(compressed)

Dies kann verwendet werden, um zu überprüfen, ob die komprimierten Bytes tatsächlich Snappy-komprimierte Bytes oder etwas anderes sind. Das heißt, etwas, das mit Snappy dekomprimiert werden kann.

Beispiel
local snappy = require "resty.snappy"
local bool   = snappy.validate_compressed_buffer(snappy.compress("test"))

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-snappy.