Store (Key-Value)
In-memory and SQL-backed key-value stores with TTL support.
Entry Kinds
| Kind | Description |
|---|---|
store.memory |
In-memory store with automatic cleanup |
store.sql |
SQL-backed store with persistence |
Memory Store
- name: sessions
kind: store.memory
max_size: 10000
cleanup_interval: "5m"
lifecycle:
auto_start: true
| Field | Type | Default | Description |
|---|---|---|---|
max_size |
int | 10000 | Maximum entries (0 = unlimited) |
cleanup_interval |
duration | 5m | Expired entry cleanup interval |
When max_size is reached, new entries are rejected. Data is lost on restart.
SQL Store
- name: cache
kind: store.sql
database: app:postgres
table_name: kv_store
cleanup_interval: "10m"
lifecycle:
auto_start: true
| Field | Type | Default | Description |
|---|---|---|---|
database |
reference | required | Database entry reference |
table_name |
string | required | Table name for storage |
id_column_name |
string | key | Column for keys |
payload_column_name |
string | value | Column for values |
expire_column_name |
string | expires_at | Column for expiration |
cleanup_interval |
duration | 0 | Expired entry cleanup interval |
Column names are validated against SQL injection. Create the table before use:
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 Behavior
Both stores support time-to-live. Expired entries persist briefly until cleanup runs at cleanup_interval. Set to 0 to disable automatic cleanup.
Lua API
See Store Module for operations (get, set, delete, exists, clear).