fix: 启动时 Redis 离线后续恢复后自动切回 Redis

- 不再将 redisClient 置 nil,让 FallbackStore 接管全生命周期
- 启动时离线:FallbackStore 首次请求触发操作级降级,recoveryLoop 检测恢复后自动迁移切回
This commit is contained in:
2026-05-31 12:14:55 +08:00
parent 3e26431602
commit f036e0bc43

View File

@ -70,13 +70,13 @@ func main() {
r.Static("/uploads/avatars", "./storage/uploads/avatars") r.Static("/uploads/avatars", "./storage/uploads/avatars")
r.Static("/uploads/posts", "./storage/uploads/posts") r.Static("/uploads/posts", "./storage/uploads/posts")
// Redis 客户端(可选,不可达时自动降级为内存存储 // Redis 客户端(可选,不可达时 FallbackStore 自动降级,恢复后自动切回
var redisClient *redis.Client var redisClient *redis.Client
if cfg.Redis.Enabled { if cfg.Redis.Enabled {
redisClient, err = common.NewRedisClient(cfg.Redis) redisClient, err = common.NewRedisClient(cfg.Redis)
if err != nil { if err != nil {
log.Printf("Redis 不可用,降级为内存存储: %v", err) log.Printf("Redis 不可达,启动后首次请求将自动降级,后续恢复自动切回: %v", err)
redisClient = nil // 强制走纯内存模式 // 不置 nilgo-redis 自带重连FallbackStore 负责健康检测与恢复
} else { } else {
log.Printf("Redis 已连接 %s:%s (DB=%d)", cfg.Redis.Host, cfg.Redis.Port, cfg.Redis.DB) log.Printf("Redis 已连接 %s:%s (DB=%d)", cfg.Redis.Host, cfg.Redis.Port, cfg.Redis.DB)
} }