Files
Quincy_admin/utils/redis_util.go
2026-03-26 22:13:03 +08:00

56 lines
1.2 KiB
Go

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()
}