스토어 (키-값)

TTL 지원이 있는 인메모리 및 SQL 기반 키-값 스토어.

엔트리 종류

Kind 설명
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 동작

두 스토어 모두 TTL(Time-to-live)을 지원합니다. 만료된 항목은 cleanup_interval에서 정리가 실행될 때까지 잠시 유지됩니다. 자동 정리를 비활성화하려면 0으로 설정하세요.

Lua API

작업(get, set, delete, exists, clear)은 Store 모듈을 참조하세요.