package lib import ( . "gitdxz.51daxuetong.cn/go_dev/jjl-tools/tinodeService/config" "sync" "github.com/go-redis/redis" ) type Redis struct{} var redisClient *Redis var redisDb map[int]*redis.Client var redisOnce sync.Once var redislock *sync.Mutex = &sync.Mutex{} //create obj func GetRedisInstance() *Redis { redisOnce.Do(func() { if len(redisDb) == 0 { redisDb = make(map[int]*redis.Client) } redisClient = &Redis{} }) return redisClient } //action func (Redis) Connect(db int) *redis.Client { //double check pattern if redisDb[db] == nil { redislock.Lock() defer redislock.Unlock() if redisDb[db] == nil { redisDb[db] = redis.NewClient(&redis.Options{ Addr: GlobalConfig.RedisConnect, Password: "", // no password set DB: db, // use default DB }) } } return redisDb[db] }