snappy: LuaJIT FFI 绑定 Snappy,一个快速的压缩/解压缩工具 (https://code.google.com/p/snappy/)
安装
如果您尚未设置 RPM 仓库订阅,请 注册。然后您可以继续以下步骤。
CentOS/RHEL 7 或 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
要在 NGINX 中使用此 Lua 库,请确保已安装 nginx-module-lua。
本文档描述了 lua-resty-snappy v1.0,于 2014 年 10 月 01 日发布。
lua-resty-snappy 提供了 LuaJIT FFI 绑定到 Snappy,一个快速的压缩/解压缩工具 (https://code.google.com/p/snappy/)。
Lua API
错误代码
SNAPPY_OK = 0,
SNAPPY_INVALID_INPUT = 1,
SNAPPY_BUFFER_TOO_SMALL = 2
string,len snappy.compress(input)
使用 Snappy 算法压缩 input,并返回压缩数据及其长度。
在出错时将返回 nil 和错误代码。
示例
local snappy = require "resty.snappy"
local comp, err = snappy.compress("test")
if comp then
-- 对压缩数据和长度进行处理
-- (长度存储在 err 值中)...
else
if err == 1 then
print "无效输入"
elseif err == 2 then
print "缓冲区太小"
end
end
string,len snappy.uncompress(compressed)
使用 Snappy 算法解压 compressed,并返回解压后的数据及其长度。
在出错时将返回 nil 和错误代码。
示例
local snappy = require "resty.snappy"
local uncomp, err = snappy.uncompress(snappy.compress("test"))
number snappy.max_compressed_length(source_length)
返回给定未压缩的 source_length 时,压缩数据的最大可能长度(以字节为单位)。这用于创建压缩的缓冲区,但也可以用于快速测量(并且它可能与最终压缩输出长度无关,除了它不能大于此函数返回的值)。
示例
local snappy = require "resty.snappy"
local number = snappy.max_compressed_length(1000)
number snappy.uncompressed_length(compressed)
这是比使用 snappy.uncompress 更快的方法,用于确定压缩数据在解压缩时将占用多少字节。
示例
local snappy = require "resty.snappy"
local number = snappy.uncompressed_length(snappy.compress("test"))
boolean snappy.validate_compressed_buffer(compressed)
这可以用来检查压缩字节是否实际上是 Snappy 压缩的字节或其他内容。即,可以用 Snappy 解压缩的内容。
示例
local snappy = require "resty.snappy"
local bool = snappy.validate_compressed_buffer(snappy.compress("test"))
GitHub
您可以在 nginx-module-snappy 的 GitHub 仓库 中找到此模块的其他配置提示和文档。