package distributedlock import ( "sync" "time" "modelRT/config" "modelRT/util" "github.com/redis/go-redis/v9" ) var ( _globalLockerClient *redis.Client once sync.Once ) // initClient define func of return successfully initialized redis client func initClient(rCfg config.RedisConfig) *redis.Client { client, err := util.NewRedisClient( rCfg.Addr, util.WithPassword(rCfg.Password), util.WithDB(rCfg.DB), util.WithPoolSize(rCfg.PoolSize), util.WithTimeout(time.Duration(rCfg.Timeout)*time.Second), ) if err != nil { panic(err) } return client } // InitClientInstance define func of return instance of redis client func InitClientInstance(rCfg config.RedisConfig) *redis.Client { once.Do(func() { _globalLockerClient = initClient(rCfg) }) return _globalLockerClient } // GetRedisClientInstance define func of get redis client instance func GetRedisClientInstance() *redis.Client { client := _globalLockerClient return client }