"""
Redis 缓存键与 TTL 统一配置：所有键均带过期时间，避免 Valkey/Redis 无限增长。
全量缓存以 Redis 为主，进程内存仅作降级或最小缓冲。
"""
# 键前缀（便于排查与清理）
PREFIX_ATS = "ats:"
PREFIX_MARKET = "market:"
PREFIX_KLINES = "klines:"
PREFIX_TICKER = "ticker_24h:"
PREFIX_SYMBOL_INFO = "symbol_info:"
PREFIX_LISTEN_KEY = "listen_key:"
PREFIX_LEADER = "market_ws_leader"

# TTL（秒）- 所有写入 Redis 的键必须带 TTL，禁止无过期
TTL_LEADER = 30
TTL_TICKER_24H = 120
TTL_BOOK_TICKER = 30
TTL_KLINE_STREAM = 600          # 10 分钟（WS 实时写入的 K 线）
TTL_POSITIONS = 300             # 5 分钟（持仓缓存）
TTL_BALANCE = 300               # 5 分钟（余额缓存）
TTL_TICKER_SYMBOL = 30          # 单 symbol 24h 行情
TTL_SYMBOL_INFO = 3600          # 1 小时（交易对信息）
TTL_KLINES_REST = 1800          # REST 拉取的 K 线默认 30 分钟
TTL_KLINES_REST_OLD = 300       # 旧格式 klines:{s}:{i}:{limit} 默认 5 分钟
TTL_LISTEN_KEY = 55 * 60        # 55 分钟（listenKey 缓存）
TTL_TREND_STATE = 3600
TTL_TREND_4H = 600             # 10 分钟（trend_4h 基于 4H K 线，同根 K 线内变化缓慢）
TTL_INDICATORS = 30
TTL_RECO_SNAPSHOT = 7200
TTL_RECO_ITEM = 3600
TTL_LOCK_RECO = 10

# K 线按周期 TTL（REST 拉取后写入共享缓存）
TTL_KLINES_BY_INTERVAL = {
    '1m': 60, '3m': 120, '5m': 180, '15m': 300, '30m': 600,
    '1h': 900, '2h': 1800, '4h': 3600, '6h': 5400, '8h': 7200, '12h': 10800, '1d': 21600,
}
TTL_KLINES_OLD_BY_INTERVAL = {
    '1m': 10, '3m': 20, '5m': 30, '15m': 60, '30m': 120,
    '1h': 300, '2h': 600, '4h': 900, '6h': 1200, '8h': 1800, '12h': 2400, '1d': 3600,
}
