fix: Redis 降级机制优化:启动离线不崩溃 + 操作级即时降级 + 快速恢复

- 启动时 Redis 不可达不再 Fatal 退出,降级为内存模式继续运行
- FallbackStore 改为操作级降级:Redis 操作失败立即切换到内存,不依赖周期健康检查
- 新增 recoveryLoop:降级后每 5s 轮询尝试恢复,恢复后自动迁移内存会话回 Redis
- 健康检查与清理解耦:检查 30s 间隔,恢复轮询 5s 间隔(原 300s)
- 优化 go-redis 连接池参数(DialTimeout 1s, MaxRetries 1,减少故障阻塞时间)
This commit is contained in:
2026-05-31 12:14:10 +08:00
parent 9d6aebbc0d
commit 3e26431602
4 changed files with 127 additions and 30 deletions

View File

@ -51,7 +51,7 @@ func buildDepsCore(db *gorm.DB, cfg *config.Config, siteSettings *config.SiteSet
if cfg.Redis.Enabled && redisClient != nil {
// Redis 模式 + 自动降级保护
redisStore := session.NewRedisStore(redisClient, idleTimeout, rememberTimeout)
sessionStore = session.NewFallbackStore(redisStore, memStore, cleanupInterval)
sessionStore = session.NewFallbackStore(redisStore, memStore)
log.Println("[Router] 会话存储: Redis带内存降级保护")
} else {
// 纯内存模式