Store (Key-Value)
In-Memory- und SQL-basierte Key-Value-Stores mit TTL-Unterstützung.
Entry-Typen
| Kind | Beschreibung |
|---|---|
store.memory |
In-Memory-Store mit automatischer Bereinigung |
store.sql |
SQL-basierter Store mit Persistenz |
Memory-Store
- name: sessions
kind: store.memory
max_size: 10000
cleanup_interval: "5m"
lifecycle:
auto_start: true
| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
max_size |
int | 10000 | Maximale Einträge (0 = unbegrenzt) |
cleanup_interval |
duration | 5m | Bereinigungs-Intervall für abgelaufene Einträge |
Wenn max_size erreicht ist, werden neue Einträge abgelehnt. Daten gehen beim Neustart verloren.
SQL-Store
- name: cache
kind: store.sql
database: app:postgres
table_name: kv_store
cleanup_interval: "10m"
lifecycle:
auto_start: true
| Feld | Typ | Standard | Beschreibung |
|---|---|---|---|
database |
reference | erforderlich | Datenbank-Entry-Referenz |
table_name |
string | erforderlich | Tabellenname für Speicherung |
id_column_name |
string | key | Spalte für Schlüssel |
payload_column_name |
string | value | Spalte für Werte |
expire_column_name |
string | expires_at | Spalte für Ablauf |
cleanup_interval |
duration | 0 | Bereinigungs-Intervall für abgelaufene Einträge |
Spaltennamen werden gegen SQL-Injection validiert. Erstellen Sie die Tabelle vor der Verwendung:
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-Verhalten
Beide Stores unterstützen Time-to-Live. Abgelaufene Einträge bleiben kurz bestehen, bis die Bereinigung im Intervall cleanup_interval läuft. Auf 0 setzen um automatische Bereinigung zu deaktivieren.
Lua-API
Siehe Store-Modul für Operationen (get, set, delete, exists, clear).