auto_trade_sys/REDIS_CACHE_IMPLEMENTATION.md
薇薇安 6d2498b717 a
2026-01-17 01:28:39 +08:00

3.4 KiB
Raw Blame History

Redis 缓存实现说明

实现概述

根据 REDIS_CACHE_ANALYSIS.md 的分析,已实现以下缓存功能:

已实现的缓存功能

1. 交易对信息缓存

  • 位置: binance_client.py::get_symbol_info()
  • 缓存键: symbol_info:{symbol}
  • TTL: 1小时3600秒
  • 数据结构: HashJSON序列化
  • 性能提升: 减少 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 中支持以下配置(优先从数据库读取,回退到环境变量):

# 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 证书路径(可选)

环境变量配置示例

# 非 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

安装依赖:

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 等需要加密的场景