✨ feat(cache): 新增 Redis 缓存与 PostgreSQL 后端支持

- 新增 cache.redis 配置(独立 host/port/password/db 字段),启用后正文缓存与音频代理缓存走 Redis,键前缀 fq:cache:/fq:audio:,TTL 自动过期
- 新增 cache.backend: sqlite|postgres 切换,PG 连接用 net/url 构造 DSN,密码特殊字符自动转义;SQLite 顺手启用 WAL 与 busy_timeout
- SQL 方言收敛:q() 将 ? 占位符转换为 $n、INSERT OR IGNORE 与查询再插入统一为 ON CONFLICT、LastInsertId 改为 RETURNING id、建表 DDL 双版本分派
- PG 下 VACUUM 走 autovacuum 说明、状态页大小改查 pg_database_size
- 修复 PG 下设备保存失败:is_valid 列为 INTEGER,写入点补 boolToInt 转换
- 新增 .env 支持:敏感配置(密码/主机/访问密钥)由环境变量覆盖 config.yaml,.env 进 gitignore,仓库附 .env.example 模板
- 新增 openapi.yaml(OpenAPI 3.1):覆盖全部 24 个路径,含参数、响应结构与鉴权方案,README 增加指引
- 删除死代码 InitDevicePoolTable;新增 rebind_test.go 单测
- 更新 README 与 config.yaml 配置示例,go.mod 新增 go-redis/v9 与 pgx/v5 依赖
This commit is contained in:
chenxin committed 2026-09-29 20:33:37 +08:00
1 parent d710d382ee
commit 1eccebedf9
15 files changed
+1406 -210

No files matched your search

+41 -21
View File
@@ -2,9 +2,9 @@
# 服务器配置
server:
port: "40180" # 监听端口
host: "0.0.0.0" # 监听地址
access_key: "" # 访问密钥,为空则不启用验证(用于 /status 和 /self-info)
port: "40180" # 监听端口
host: "0.0.0.0" # 监听地址
access_key: "" # 访问密钥,为空则不启用验证(用于 /status 和 /self-info)
# 番茄小说配置
fanqie:
@@ -12,38 +12,38 @@ fanqie:
# gorgon: Gorgon算法
# 8404: 备用算法
algorithm: "gorgon"
# 签名方法: "sign2" 或 "sign4"
# sign2: 仅Gorgon签名
# sign4: X-Gorgon + X-Ladon + X-Argus 完整签名
signature: "sign4"
# 内容处理配置
content:
# 是否移除图片(默认false,保留图片)
remove_images: false
# 是否移除图片描述(默认false,保留描述)
remove_image_desc: true
# 是否移除空行(默认true,移除空行)
remove_blank_lines: true
# 是否移除HTML标签(默认false,保留HTML)
remove_html_tags: true
# 是否移除章节名(默认false,保留章节名)
remove_chapter_title: true
# 是否添加段落缩进(默认true,添加两个全角空格)
add_paragraph_indent: false
# 段落间使用双换行(true=\n\n, false=\n)
double_newline: false
# 是否启用段评功能(默认true,启用段评)
enable_review: true
# 漫画处理配置
manga:
# 输出模式:proxy / data_uri / url
@@ -56,13 +56,34 @@ fanqie:
cache:
# 是否启用正文内容缓存
enabled: true
# SQLite数据库文件路径
# 存储后端:sqlite | postgres
backend: postgres
# SQLite数据库文件路径(backend 为 sqlite 时使用)
sqlite_path: "./cache.db"
# PostgreSQL连接配置(backend 为 postgres 时使用)
# 敏感值(密码等)建议放 .env,见 .env.example;环境变量优先于此处配置
postgres:
host: "127.0.0.1"
port: 5432
user: "postgres"
password: ""
database: "fanqie"
sslmode: "disable" # disable | prefer | require
# Redis缓存(启用后正文缓存与音频代理缓存走 Redis,统计数据与设备池仍在 SQL 库)
redis:
enabled: true
host: "127.0.0.1"
port: 6379
password: ""
db: 1
# 是否启用正文内容缓存自动清理
cleanup_enabled: true
# 正文内容缓存清理时间(秒),0表示不自动清理
cleanup_seconds: 86400
@@ -70,13 +91,12 @@ cache:
device_key_pool:
# 是否启用设备密钥池
enabled: true
# 初始化设备数量
initial_size: 20
# 最小设备数量(低于此数量自动补充)
min_size: 10
# 最大设备数量
max_size: 30