package diagram import ( "sync" "time" "modelRT/config" "modelRT/util" "github.com/redis/go-redis/v9" ) var ( _globalStorageClient *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 } // InitRedisClientInstance define func of return instance of redis client func InitRedisClientInstance(rCfg config.RedisConfig) *redis.Client { once.Do(func() { _globalStorageClient = initClient(rCfg) }) return _globalStorageClient } // GetRedisClientInstance define func of get redis client instance func GetRedisClientInstance() *redis.Client { client := _globalStorageClient return client }