## Why 当前系统使用 SQLite 作为唯一存储后端,无法满足行情数据高频读写的性能需求。每次刷新行情数据都需要直接读写磁盘文件,导致响应延迟高、并发能力受限。需要引入更高效的存储方案以提升系统吞吐量和用户体验。 ## What Changes - 引入 Redis 作为热数据缓存层,行情数据优先从 Redis 读取(TTL 30 天) - 引入 MySQL 作为持久化存储层,替代 SQLite 承担主要持久化职责 - 保留 SQLite 作为最终兜底方案,当 Redis 和 MySQL 均不可用时启用 - 新增数据访问层:实现 Redis → MySQL → SQLite 的三级降级读取策略 - 刷新接口改造:数据同步写入 Redis 和 MySQL,保证双写一致性 - 启动流程改造:初始化 Redis/MySQL/SQLite 连接,检测可用性 ## Capabilities ### New Capabilities - `redis-cache-layer`: Redis 缓存读写能力,包括热数据缓存、TTL 管理、缓存失效策略 - `mysql-persistence`: MySQL 持久化存储能力,替代 SQLite 承担主要持久化职责 - `storage-fallback`: 三级降级策略(Redis → MySQL → SQLite),保证系统可用性 - `dual-write-consistency`: 刷新接口双写能力,保证 Redis 和 MySQL 数据一致性 ### Modified Capabilities (无既有 spec 需要修改) ## Impact - **代码**: `app/database.py`、`app/models.py`、`app/api/data.py`、`app/services/collector.py`、`app/main.py` - **依赖**: 新增 `redis`、`pymysql`(或 `aiomysql`)Python 包 - **配置**: `app/config.py` 新增 Redis/MySQL 连接配置 - **部署**: `docker-compose.yml` 新增 Redis 和 MySQL 服务 - **数据库**: 新增 MySQL 数据库初始化脚本,保留 SQLite 作为兜底