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.