跳到主要内容

Redis WebSocket 支持

Redis 在 OPL 数据空间里主要有两类用途:

  1. 应用状态 / session / token 相关存储
  2. 多实例、多 worker 下的 WebSocket 协调

什么时候必须要 Redis

单实例、单 worker

如果你是默认的单实例 + UVICORN_WORKERS=1,Redis 不是基础功能必需品

注意

但如果没有 Redis,注销不会立即吊销 JWT,token 会持续有效直到自然过期。

多 worker / 多实例 / 高可用

以下场景必须上 Redis:

  • UVICORN_WORKERS > 1
  • Kubernetes 多 pod
  • Docker Swarm 多副本
  • 任意并发跑多个 OPL 数据空间进程的部署

Redis 服务端自身要配好

为了避免 max number of clients reached,建议:

maxclients 10000
timeout 1800

Docker 示例:

command: "valkey-server --save 30 1 --maxclients 10000 --timeout 1800"

OPL 数据空间侧变量

REDIS_URL=redis://redis-valkey:6379/0
ENABLE_WEBSOCKET_SUPPORT=true
WEBSOCKET_MANAGER=redis
WEBSOCKET_REDIS_URL=redis://redis-valkey:6379/1

如果你走反代,还要正确设置 CORS_ALLOW_ORIGIN