Перейти к содержанию

uuid: LuaJIT FFI привязки для libuuid, библиотеки универсальных уникальных идентификаторов, совместимой с DCE

Установка

Если вы еще не настроили подписку на репозиторий 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-uuid

CentOS/RHEL 8+, Fedora Linux, Amazon Linux 2023

dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install lua5.1-resty-uuid

Чтобы использовать эту библиотеку Lua с NGINX, убедитесь, что nginx-module-lua установлен.

Этот документ описывает lua-resty-uuid v1.2.0, выпущенный 7 мая 2026 года.


LuaJIT FFI привязки для libuuid — библиотеки универсальных уникальных идентификаторов (UUID/GUID), совместимой с DCE. Генерирует UUID версии 1 (время), 4 (случайный), 6 (переупорядоченное время) и 7 (Unix-эпоха), а также парсит и проверяет существующие строки UUID.

Быстрый старт

local uuid = require "resty.uuid"

uuid.generate()         --> "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
uuid.generate_random()  --> "550e8400-e29b-41d4-a716-446655440000"  (v4)
uuid.generate_time()    --> "..."                                   (v1)
uuid.generate_time_v6() --> "..."                                   (v6)
uuid.generate_time_v7() --> "..."                                   (v7)

uuid()                  --> сокращение для uuid.generate()

uuid.is_valid("not-a-uuid")  --> false
uuid.type(some_v4_id)        --> 4
uuid.variant(some_id)        --> 1   (DCE)
uuid.time(some_v1_id)        --> 1714867200, 123456

API

Модуль представляет собой таблицу, которая также может быть вызвана. Вызов uuid() является сокращением для uuid.generate().

Генераторы

Функция Возвращает Описание
uuid.generate() string Лучший доступный генератор на хосте (случайный, когда это возможно, в противном случае основанный на времени).
uuid.generate_random() string UUID версии 4 (случайный).
uuid.generate_time() string UUID версии 1 (метка времени + идентификатор узла).
uuid.generate_time_safe() string, boolean UUID версии 1 и флаг, указывающий, была ли генерация синхронизирована для уникальности.
uuid.generate_time_v6() string UUID версии 6 — поля v1 переупорядочены для лексикографической сортировки.
uuid.generate_time_v7() string UUID версии 7 — миллисекундная метка времени Unix + случайный хвост.

Все генераторы возвращают каноническую 36-символьную форму 8-4-4-4-12 в нижнем регистре, например, "f81d4fae-7dec-11d0-a765-00a0c91e6bf6".

Проверка

Функция Возвращает Описание
uuid.is_valid(id) boolean Является ли id корректным UUID.
uuid.type(id) int или nil Версия UUID (UUID_TYPE_* константа), или nil, если недействительно.
uuid.variant(id) int или nil Вариант UUID (UUID_VARIANT_* константа), или nil, если недействительно.
uuid.time(id) number, number или nil Секунды с момента Unix-эпохи и микросекунды в пределах этой секунды; nil, если id не является корректным UUID. Имеет смысл только для v1, v6 и v7.

Справочник констант

uuid.type возвращает одно из:

Значение Константа Значение
1 UUID_TYPE_DCE_TIME Основанный на времени (v1)
2 UUID_TYPE_DCE_SECURITY DCE Security (v2)
3 UUID_TYPE_DCE_MD5 Имя на основе MD5 (v3)
4 UUID_TYPE_DCE_RANDOM Случайный (v4)
5 UUID_TYPE_DCE_SHA1 Имя на основе SHA-1 (v5)
6 UUID_TYPE_DCE_TIME_V6 Переупорядоченное время (v6)
7 UUID_TYPE_DCE_TIME_V7 Время Unix-эпохи (v7)

uuid.variant возвращает одно из:

Значение Константа Значение
0 UUID_VARIANT_NCS Наследие NCS / Apollo
1 UUID_VARIANT_DCE DCE 1.1 / RFC 4122
2 UUID_VARIANT_MICROSOFT Microsoft GUID
3 UUID_VARIANT_OTHER Зарезервировано

Тестирование

make test          # полный процесс: установка rock, запуск busted, покрытие, линт
make unit          # только busted
make coverage      # отчет busted + luacov
make lint          # luacheck

Тесты находятся в spec/ и проверяют каждую публичную функцию, а также метаметод __call.

Документация

Справочник API создается с помощью LDoc и находится в docs/:

make docs

GitHub

Вы можете найти дополнительные советы по настройке и документацию для этого модуля в репозитории GitHub для nginx-module-uuid.