Skip to content
pollybird edited this page Sep 11, 2026 · 2 revisions

Redis 缓存与 Session

Redis 缓存与 Session

v2.5.0 引入 Redis 作为可选的缓存后端与服务端 Session 存储,适合多实例负载均衡场景。未启用 Redis 时回退 SimpleCache + Cookie Session,单机部署零依赖。

自动检测机制

应用启动时检测环境变量 REDIS_URL:

  • 有值且 Redis 可达 → 启用 RedisCache(Flask-Caching)+ 服务端 Session(Flask-Session 存 Redis)
  • 有值但不可达 → 回退 SimpleCache + Cookie Session,日志输出警告
  • 未设置 → SimpleCache + Cookie Session(与 v2.4.x 行为一致)

启用方式

`# 源码部署:设置环境变量后启动
export REDIS_URL=redis://127.0.0.1:6379/0
python run.py

# 带密码的 Redis
export REDIS_URL=redis://:yourpassword@127.0.0.1:6379/0

# Docker 部署:install.sh 交互选择启用 Redis
bash docker/install.sh
# 自动在 .env 中写入 REDIS_URL,启动时携带 --profile redis

# 独立 compose 文件:取消注释文件中的 redis 服务块与 redis_data 卷
# docker-compose.mysql.yml 或 docker-compose.postgresql.yml 内已预置(默认注释)
# 也可用通用编排文件:
docker compose --profile mysql --profile redis up -d`

后台状态页

后台「系统设置 → Redis 缓存」提供只读状态展示:

  • 已启用(绿色):显示连接地址,说明 RedisCache + 服务端 Session 已生效
  • 未启用(黄色):提示安装 Redis 并设置环境变量的步骤
  • 连接失败(红色):显示错误信息,引导排查 Redis 服务状态与连接参数

Redis 后端在应用启动时初始化,运行时不可切换。修改 REDIS_URL 后需重启应用生效。后台不提供手动开关,避免运行时切换导致缓存与 Session 状态不一致。

安全建议

  • Redis 配置密码(requirepass 或 ACL),REDIS_URL 中携带密码
  • Redis 仅监听内网地址(bind 127.0.0.1 或内网 IP)
  • 生产环境通过防火墙限制 6379 端口访问
  • REDIS_URL 含密码属敏感信息,.env 已在 .gitignore 中排除

Clone this wiki locally