snappy: ligações FFI do LuaJIT para Snappy, um compressor/descompressor rápido (https://code.google.com/p/snappy/)
Instalação
Se você ainda não configurou a assinatura do repositório RPM, inscreva-se. Depois, você pode prosseguir com os seguintes passos.
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
Para usar esta biblioteca Lua com NGINX, certifique-se de que o nginx-module-lua está instalado.
Este documento descreve o lua-resty-snappy v1.0 lançado em 01 de outubro de 2014.
lua-resty-snappy fornece ligações FFI do LuaJIT para Snappy, um compressor/descompressor rápido (https://code.google.com/p/snappy/).
API Lua
Códigos de Erro
SNAPPY_OK = 0,
SNAPPY_INVALID_INPUT = 1,
SNAPPY_BUFFER_TOO_SMALL = 2
string,len snappy.compress(input)
Comprime input com o algoritmo Snappy e retorna os dados comprimidos e seu comprimento. Em caso de erro, isso retornará nil e um código de erro.
Exemplo
local snappy = require "resty.snappy"
local comp, err = snappy.compress("test")
if comp then
-- faça algo com os dados comprimidos e o comprimento
-- (o comprimento é armazenado no valor de err)...
else
if err == 1 then
print "Entrada inválida"
elseif err == 2 then
print "Buffer muito pequeno"
end
end
string,len snappy.uncompress(compressed)
Descomprime compressed com o algoritmo Snappy e retorna os dados descomprimidos e seu comprimento. Em caso de erro, isso retornará nil e um código de erro.
Exemplo
local snappy = require "resty.snappy"
local uncomp, err = snappy.uncompress(snappy.compress("test"))
number snappy.max_compressed_length(source_length)
Retorna o comprimento máximo possível em número de bytes de dados comprimidos quando o source_length descomprimido é fornecido. Isso é usado para criar um buffer para compressão, mas também pode ser usado em medições rápidas (e pode não ter relação com o comprimento final da saída comprimida, exceto que não pode ser maior do que o que esta função retorna).
Exemplo
local snappy = require "resty.snappy"
local number = snappy.max_compressed_length(1000)
number snappy.uncompressed_length(compressed)
Esta é uma maneira mais rápida (do que usar snappy.uncompress) para determinar quantos bytes os dados comprimidos terão quando forem descomprimidos.
Exemplo
local snappy = require "resty.snappy"
local number = snappy.uncompressed_length(snappy.compress("test"))
boolean snappy.validate_compressed_buffer(compressed)
Isso pode ser usado para verificar se os bytes comprimidos são realmente bytes comprimidos pelo Snappy ou algo diferente. Ou seja, algo que pode ser descomprimido com Snappy.
Exemplo
local snappy = require "resty.snappy"
local bool = snappy.validate_compressed_buffer(snappy.compress("test"))
GitHub
Você pode encontrar dicas adicionais de configuração e documentação para este módulo no repositório do GitHub para nginx-module-snappy.