Pular para conteúdo

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.