Store(键值存储)
内存和 SQL 支持的键值存储,支持 TTL。
Entry 类型
| 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 | required | 数据库 entry 引用 |
table_name |
string | required | 存储表名 |
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)。