package utils import ( "Quincy_admin/config" "context" "fmt" "log" "strconv" "sync" "github.com/go-redis/redis/v8" ) // Redis客户端全局变量 var redisClient *redis.Client var redisOnce sync.Once // InitRedis 初始化Redis连接 func InitRedis(cfg *config.Config) *redis.Client { redisOnce.Do(func() { // 将字符串类型的DB转换为整数 redisDB, err := strconv.Atoi(cfg.Redis.DB) if err != nil { log.Printf("Invalid Redis DB value '%s', using default 0: %v", cfg.Redis.DB, err) redisDB = 0 } // 创建Redis客户端 redisClient = redis.NewClient(&redis.Options{ Addr: fmt.Sprintf("%s:%s", cfg.Redis.Host, cfg.Redis.Port), Password: cfg.Redis.Password, // 没有密码则留空 DB: redisDB, // 使用转换后的整数DB }) // 测试Redis连接 ctx := context.Background() _, err = redisClient.Ping(ctx).Result() if err != nil { log.Printf("Error connecting to Redis: %v", err) } else { } }) return redisClient } // GetRedis 获取Redis客户端 func GetRedis() *redis.Client { return redisClient } // GetContext 获取上下文 func GetContext() context.Context { return context.Background() }