# Redis 缓存实现说明 ## 实现概述 根据 `REDIS_CACHE_ANALYSIS.md` 的分析,已实现以下缓存功能: ### ✅ 已实现的缓存功能 #### 1. 交易对信息缓存 ⭐⭐⭐⭐⭐ - **位置**: `binance_client.py::get_symbol_info()` - **缓存键**: `symbol_info:{symbol}` - **TTL**: 1小时(3600秒) - **数据结构**: Hash(JSON序列化) - **性能提升**: 减少 API 调用 99%+,延迟从 ~100ms → ~1ms #### 2. K线数据缓存 ⭐⭐⭐⭐ - **位置**: `binance_client.py::get_klines()` - **缓存键**: `klines:{symbol}:{interval}:{limit}` - **TTL**: 根据 interval 动态设置 - 1m: 10秒 - 5m: 30秒 - 15m: 1分钟 - 1h: 5分钟 - 4h: 15分钟 - 1d: 1小时 - **性能提升**: 减少 API 调用 90%+,加速市场扫描 70-80% #### 3. 24小时行情数据缓存 ⭐⭐⭐⭐ - **位置**: `binance_client.py::get_ticker_24h()` 和 `get_all_tickers_24h()` - **缓存键**: - 单个: `ticker_24h:{symbol}` - 全部: `ticker_24h:all` - **TTL**: 30秒 - **性能提升**: 减少 API 调用 95%+,加速市场扫描 95% #### 4. 市场扫描结果缓存 ⭐⭐ - **位置**: `market_scanner.py::scan_market()` - **缓存键**: `scan_result:top_symbols` - **TTL**: 30秒 - **性能提升**: 在扫描间隔内可以复用结果 ## 配置说明 ### Redis/Valkey 连接配置 在 `config.py` 中支持以下配置(优先从数据库读取,回退到环境变量): ```python # Redis 连接 URL(支持 TLS) REDIS_URL = "redis://localhost:6379" # 或 "rediss://localhost:6380" (TLS) REDIS_USE_TLS = False # 是否使用 TLS REDIS_SSL_CERT_REQS = "required" # SSL 证书验证要求: 'none', 'optional', 'required' REDIS_SSL_CA_CERTS = None # SSL CA 证书路径(可选) ``` ### 环境变量配置示例 ```bash # 非 TLS 连接 export REDIS_URL="redis://localhost:6379" export REDIS_USE_TLS="false" # TLS 连接(Valkey) export REDIS_URL="rediss://your-valkey-host:6380" export REDIS_USE_TLS="true" export REDIS_SSL_CERT_REQS="required" export REDIS_SSL_CA_CERTS="/path/to/ca.crt" # 可选 ``` ### 数据库配置 也可以通过数据库 `trading_config` 表配置: - `REDIS_URL`: Redis 连接 URL - `REDIS_USE_TLS`: 是否使用 TLS(布尔值) - `REDIS_SSL_CERT_REQS`: SSL 证书验证要求 - `REDIS_SSL_CA_CERTS`: SSL CA 证书路径(可选) ## 降级机制 如果 Redis 连接失败,系统会自动降级到内存缓存: - 交易对信息:使用内存缓存 `_symbol_info_cache` - 价格数据:使用 WebSocket 缓存 `_price_cache` - 其他数据:使用内存缓存 `_memory_cache` ## 依赖安装 已更新 `requirements.txt`,添加了 `aioredis==2.0.1`。 安装依赖: ```bash pip install -r trading_system/requirements.txt ``` ## 使用说明 1. **配置 Redis/Valkey 连接**:设置 `REDIS_URL` 等配置项 2. **启动交易系统**:系统会自动连接 Redis 并启用缓存 3. **监控日志**:查看日志中的缓存命中情况 ## 预期效果 根据 `REDIS_CACHE_ANALYSIS.md` 的评估: - **API 调用减少**: 70-90% - **系统响应速度**: 提升 70-80% - **API 频率限制风险**: 显著降低 - **系统稳定性**: 提升(减少网络依赖) ## 注意事项 1. **缓存一致性**: TTL 设置已根据数据更新频率优化 2. **Redis 可用性**: 系统会自动处理 Redis 不可用的情况(降级到内存缓存) 3. **内存使用**: Redis 内存使用需要监控 4. **TLS 连接**: 支持 TLS 连接,适用于 Valkey 等需要加密的场景