Key-Value хранилище
Быстрое key-value хранилище с поддержкой TTL. Идеально для кэширования, сессий и временного состояния.
Настройку хранилища см. в Store.
Загрузка
local store = require("store")
Получение хранилища
Получить ресурс хранилища по ID реестра:
local cache, err = store.get("app:cache")
if err then
return nil, err
end
cache:set("user:123", {name = "Alice"}, 3600)
local user = cache:get("user:123")
cache:release()
| Параметр | Тип | Описание |
|---|---|---|
id |
string | ID ресурса хранилища |
Возвращает: Store, error
Сохранение значений
Сохранить значение с опциональным TTL:
local cache = store.get("app:cache")
-- Простое сохранение
cache:set("user:123:name", "Alice")
-- Сохранение с TTL (истекает через 300 секунд)
cache:set("session:abc", {user_id = 123, role = "admin"}, 300)
| Параметр | Тип | Описание |
|---|---|---|
key |
string | Ключ |
value |
any | Значение (таблицы, строки, числа, булевы) |
ttl |
number | TTL в секундах (опционально, 0 = без истечения) |
Возвращает: boolean, error
Получение значений
Получить значение по ключу:
local user = cache:get("user:123")
if not user then
-- Ключ не найден или истёк
end
| Параметр | Тип | Описание |
|---|---|---|
key |
string | Ключ для получения |
Возвращает: any, error
Возвращает nil если ключ не существует.
Проверка существования
Проверить наличие ключа без получения значения:
if cache:has("lock:" .. resource_id) then
return nil, errors.new("CONFLICT", "Resource is locked")
end
| Параметр | Тип | Описание |
|---|---|---|
key |
string | Ключ для проверки |
Возвращает: boolean, error
Удаление ключей
Удалить ключ из хранилища:
cache:delete("session:" .. session_id)
| Параметр | Тип | Описание |
|---|---|---|
key |
string | Ключ для удаления |
Возвращает: boolean, error
Возвращает true если удалён, false если ключ не существовал.
Методы Store
| Метод | Возвращает | Описание |
|---|---|---|
get(key) |
any, error |
Получить значение по ключу |
set(key, value, ttl?) |
boolean, error |
Сохранить значение с опциональным TTL |
has(key) |
boolean, error |
Проверить существование ключа |
delete(key) |
boolean, error |
Удалить ключ |
release() |
boolean |
Вернуть хранилище в пул |
Разрешения
Операции хранилища подчиняются вычислению политики безопасности.
| Действие | Ресурс | Атрибуты | Описание |
|---|---|---|---|
store.get |
ID хранилища | - | Получить ресурс хранилища |
store.key.get |
ID хранилища | key |
Прочитать значение ключа |
store.key.set |
ID хранилища | key |
Записать значение ключа |
store.key.delete |
ID хранилища | key |
Удалить ключ |
store.key.has |
ID хранилища | key |
Проверить существование ключа |
Ошибки
| Условие | Kind | Повторяемо |
|---|---|---|
| Пустой ID ресурса | errors.INVALID |
нет |
| Ресурс не найден | errors.NOT_FOUND |
нет |
| Хранилище освобождено | errors.INVALID |
нет |
| Доступ запрещён | errors.PERMISSION_DENIED |
нет |
См. Обработка ошибок для работы с ошибками.