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_KEY或Wallet_Address作为限流维度。
4. 运维操作
查看所有缓存的交易对价格
redis-cli KEYS "price:*"
监控实时消息流
redis-cli MONITOR
清理缓存 (谨慎使用)
# 清空所有数据库
redis-cli FLUSHALL