package infra

import (
	"github.com/go-redis/redis"
	"os"
	"sync"
)

var (
	once              sync.Once
	GlobalRedisClient *redis.Client
)

// 获取全局的Redis客户端
func InitRedisClient(addr string, password string, db int) {
	once.Do(func() {
		// 创建Redis连接
		GlobalRedisClient = redis.NewClient(&redis.Options{
			Addr:     addr,     // Redis地址
			Password: password, // Redis密码,如果没有密码则留空
			DB:       db,       // Redis数据库索引
		})
	})
	// 检查连接是否成功
	_, err := GlobalRedisClient.Ping().Result()
	if err != nil {
		GlobalLogger.Error("初始化 Redis 客户端报错:", err)
	}
	// 清空当前选择的数据库
	err = GlobalRedisClient.FlushDB().Err()
	if err != nil {
		GlobalLogger.Errorf("清空 redis 【%v】号库的数据时报错,初始化 Redis 客户端失败,错误信息为:%v", db, err)
		os.Exit(0)
	}
	GlobalLogger.Infof("已清空 redis 【%v】号库的数据,并初始化 Redis 全局客户端成功。", db)
}