Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Подмодуль compress.zlib

Обзор

Подмодуль compress.zlib предоставляет возможность сжимать и распаковывать данные с использованием алгоритма zlib. Использовать компрессор zlib можно следующим образом:

  1. Создайте экземпляр компрессора с помощью функции compress.zlib.new():

    local zlib_compressor = require('compress.zlib').new()-- or --local zlib_compressor = require('compress').zlib.new()

    При необходимости можно передать параметры сжатия (zlib_opts), специфичные для zlib:

local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)
  1. Чтобы сжать указанные данные, используйте метод compress():
local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)
  1. Чтобы распаковать данные, вызовите decompress():
local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)

Справочник по API

Ниже приведен список функций и объектов compress.zlib.

Имя

Назначение

compress.zlib.new()

Создает экземпляр компрессора zlib

zlib_compressor

Экземпляр компрессора zlib

zlib_opts

Параметры конфигурации компрессора zlib

compress.zlib.new([zlib_opts])

Создает экземпляр компрессора zlib.

Параметры:

  • zlib_opts (table) — параметры сжатия zlib (см. zlib_opts)

Возвращает

новый экземпляр компрессора zlib (см. zlib_compressor)

Тип возвращаемого значения

userdata

Пример:

local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)

zlib_compressor

Экземпляр компрессора, предоставляющий API для сжатия и распаковки данных с использованием алгоритма zlib. Чтобы создать компрессор zlib, вызовите compress.zlib.new().

zlib_compressor:compress(data)

Сжимает указанные данные.

Параметры:

  • data (string) — данные для сжатия

Возвращает

сжатые данные

Тип возвращаемого значения

string

Пример:

local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)

zlib_compressor:decompress(data)

Распаковывает указанные данные.

Параметры:

  • data (string) — данные для распаковки

Возвращает

распакованные данные

Тип возвращаемого значения

string

Пример:

local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)

zlib_opts

Параметры конфигурации zlib_compressor. Эти параметры можно передать в функцию compress.zlib.new().

Пример:

local zlib_compressor = require('compress.zlib').new({    level = 5,    mem_level = 5,    strategy = 'filtered'})compressed_data = zlib_compressor:compress('Hello world!')decompressed_data = zlib_compressor:decompress(compressed_data)print(decompressed_data)

zlib_opts.level

Задает уровень сжатия zlib для настройки соотношения степени сжатия и скорости. Более низкий уровень повышает скорость сжатия за счет степени сжатия.

  • По умолчанию: 6
  • Минимум: 0 (без сжатия)
  • Максимум: 9

zlib_opts.mem_level

Задает объем памяти, выделяемой для компрессора zlib. Чем больше значение, тем выше скорость и степень сжатия.

  • По умолчанию: 8
  • Минимум: 1
  • Максимум: 9

zlib_opts.strategy

Задает стратегию сжатия. Возможные значения:

  • default — для обычных данных.
  • huffman_only — использует только кодирование Хаффмана (без сопоставления строк). Самый быстрый алгоритм сжатия, но не очень эффективный для большинства данных.
  • filtered — для данных, созданных фильтром или предиктором. Отфильтрованные данные состоят в основном из небольших значений со случайным распределением. Этот алгоритм сжатия настроен на лучшее сжатие таких данных.
  • rle — ограничивает расстояние сопоставления до одного (кодирование длин серий). rle разработан почти таким же быстрым, как huffman_only, но обеспечивает лучшее сжатие для данных изображений PNG.
  • fixed — предотвращает использование динамических кодов Хаффмана и предоставляет более простой декодер для специальных приложений.