Хранилище ключ-значение
Хранилища в памяти и на базе SQL с поддержкой TTL.
Типы записей
| Тип | Описание |
|---|---|
store.memory |
Хранилище в памяти с автоматической очисткой |
store.sql |
Хранилище на базе SQL с персистентностью |
Хранилище в памяти
- name: sessions
kind: store.memory
max_size: 10000
cleanup_interval: "5m"
lifecycle:
auto_start: true
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
max_size |
int | 10000 | Максимум записей (0 = без ограничений) |
cleanup_interval |
duration | 5m | Интервал очистки просроченных записей |
При достижении max_size новые записи отклоняются. Данные теряются при перезапуске.
SQL-хранилище
- name: cache
kind: store.sql
database: app:postgres
table_name: kv_store
cleanup_interval: "10m"
lifecycle:
auto_start: true
| Поле | Тип | По умолчанию | Описание |
|---|---|---|---|
database |
reference | обязательно | Ссылка на запись базы данных |
table_name |
string | обязательно | Имя таблицы |
id_column_name |
string | key | Колонка для ключей |
payload_column_name |
string | value | Колонка для значений |
expire_column_name |
string | expires_at | Колонка для срока действия |
cleanup_interval |
duration | 0 | Интервал очистки просроченных записей |
Имена колонок проверяются на SQL-инъекции. Создайте таблицу перед использованием:
CREATE TABLE kv_store (
key VARCHAR(255) PRIMARY KEY,
value BYTEA NOT NULL,
expires_at BIGINT
);
CREATE INDEX idx_expires_at ON kv_store(expires_at) WHERE expires_at IS NOT NULL;
Поведение TTL
Оба хранилища поддерживают время жизни записей. Просроченные записи сохраняются до момента очистки с интервалом cleanup_interval. Установите 0 для отключения автоматической очистки.
Lua API
См. Модуль Store для операций (get, set, delete, exists, clear).