package config

import (
	"fmt"
	"github.com/pkg/errors"
	"gopkg.in/redis.v4"
	"background/logs"
)

var (
	gRedis1 *redis.Client
)

func initRedis(addr string, pwd string, db int, coon int) (*redis.Client, error) {

	red := redis.NewClient(&redis.Options{
		Addr:     addr,
		Password: pwd,
		DB:       db,
		PoolSize: coon,
	})

	_, err := red.Ping().Result()
	if nil != err {
		red.Close()
		return nil, errors.New(fmt.Sprintf("fail to ping redis,addr :%s , pwd :%s ,DB :%d", addr, pwd, db))
	}

	return red, nil
}

func InitRedis() error {
	redisConf := GetRedis1()
	if nil == redisConf {
		return errors.New("Error Config Redis")
	} else {
		var e error
		gRedis1, e = initRedis(GetRedis1().Addr, GetRedis1().Pwd, GetRedis1().DB, GetRedis1().PoolSize)
		if nil != e {
			logs.Error(e.Error())
			return e
		}
	}
	return nil
}
func RedisOne() *redis.Client {
	return gRedis1
}
