You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.7 KiB
1.7 KiB
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 作为兜底