Store (Chave-Valor)

Armazenamentos chave-valor em memória e com backend SQL com suporte a TTL.

Tipos de Entradas

Tipo Descrição
store.memory Armazenamento em memória com limpeza automática
store.sql Armazenamento com backend SQL com persistência

Armazenamento em Memória

- name: sessions
  kind: store.memory
  max_size: 10000
  cleanup_interval: "5m"
  lifecycle:
    auto_start: true
Campo Tipo Padrão Descrição
max_size int 10000 Máximo de entradas (0 = ilimitado)
cleanup_interval duration 5m Intervalo de limpeza de entradas expiradas

Quando max_size é atingido, novas entradas são rejeitadas. Dados são perdidos ao reiniciar.

Armazenamento SQL

- name: cache
  kind: store.sql
  database: app:postgres
  table_name: kv_store
  cleanup_interval: "10m"
  lifecycle:
    auto_start: true
Campo Tipo Padrão Descrição
database referência obrigatório Referência da entrada de banco de dados
table_name string obrigatório Nome da tabela para armazenamento
id_column_name string key Coluna para chaves
payload_column_name string value Coluna para valores
expire_column_name string expires_at Coluna para expiração
cleanup_interval duration 0 Intervalo de limpeza de entradas expiradas

Nomes de colunas são validados contra injeção SQL. Crie a tabela antes de usar:

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;

Comportamento de TTL

Ambos os armazenamentos suportam time-to-live. Entradas expiradas persistem brevemente até a limpeza executar em cleanup_interval. Defina como 0 para desabilitar limpeza automática.

API Lua

Veja Módulo Store para operações (get, set, delete, exists, clear).