跳到主要内容

Redis:内存缓存与实时分发 (Cache Layer)

Redis 在系统中充当高速数据缓存层和实时消息中间件,确保 Web 服务的极速响应和 WebSocket 的高效推送。

1. 缓存场景与数据结构

1.1 实时价格与 Ticker (String)

后端定期从 Hyperliquid 采集到的最新价格会同步写入 Redis。

  • Key 示例: price:{symbol}
  • 数据: JSON 格式的 Ticker 详情(last_price, 24h_high/low 等)。

1.2 订单簿快照 (Sorted Set / String)

存储 L2 级别的深度数据。

  • Key 示例: orderbook:{symbol}
  • 更新策略: 每次收到外部深度更新,直接覆盖或增量更新,前端 API 优先从此读取。

1.3 用户与持仓状态 (Hash)

缓存频繁访问的仓位信息和余额快照,减轻 PostgreSQL 的读取压力。

  • Key 示例: pos:{user_address}:{symbol}

2. 实时分发 (Pub/Sub)

后端利用 Redis 的发布/订阅功能,将所有撮合成功的订单、成交以及最新的行情变化分发给多个 WebSocket 连接节点。

  • 频道设计:
    • market:ticker:*: 推送实时行情。
    • user:trade:{address}: 针对特定用户的私有成交通知。
    • market:orderbook:*: 推送深度变动。

3. 分布式限流

系统使用 Redis 进行 API 的分布式 Rate Limiting(使用滑动窗口算法),确保后端服务器免受恶意攻击或过高频率的请求。

  • 限流单位: 以 API_KEYWallet_Address 作为限流维度。

4. 运维操作

查看所有缓存的交易对价格

redis-cli KEYS "price:*"

监控实时消息流

redis-cli MONITOR

清理缓存 (谨慎使用)

# 清空所有数据库
redis-cli FLUSHALL