Files
backend/pkg/redis/manager.go
lafay 7d1c78f965
Some checks failed
Build / build (push) Successful in 7m52s
Build / build-docker (push) Has been cancelled
refactor: 移除全局单例、修复分层违规、统一错误与响应
2026-06-15 16:40:36 +08:00

46 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package redis
import (
"fmt"
"os"
"github.com/alicebob/miniredis/v2"
redis9 "github.com/redis/go-redis/v9"
"go.uber.org/zap"
)
// 本文件原包含基于 sync.Once 的全局单例Init/GetClient/MustGetClient/Close
//
// 在 DI 迁移阶段4全局单例已被移除。Redis 客户端由 fx.Provide 构造
// (见 internal/app/infra_module.go 的 provideRedis包含 miniredis 回退逻辑),
// 通过构造函数参数注入到各消费者。
//
// Redis 客户端构造逻辑见 redis.go 的 New()。
// AllowFallbackToMiniRedis 检查当前环境是否允许回退到 miniredis仅开发/测试环境)。
func AllowFallbackToMiniRedis() bool {
env := os.Getenv("ENVIRONMENT")
return env == "development" || env == "test" || env == "dev" ||
os.Getenv("USE_MINIREDIS") == "true"
}
// InitMiniRedis 初始化 miniredis用于开发/测试环境的 DI 回退)。
func InitMiniRedis(logger *zap.Logger) (*Client, error) {
mr, err := miniredis.Run()
if err != nil {
return nil, fmt.Errorf("启动miniredis失败: %w", err)
}
redisClient := redis9.NewClient(&redis9.Options{
Addr: mr.Addr(),
})
client := &Client{
Client: redisClient,
logger: logger,
}
logger.Info("miniredis已启动", zap.String("addr", mr.Addr()))
return client, nil
}