modelRT/diagram/redis_init.go

46 lines
974 B
Go

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
}
// InitClientInstance define func of return instance of redis client
func InitClientInstance(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
}