56 lines
1.2 KiB
Go
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()
|
|
}
|