func (conf *RedisClientConf) GetClient() *redis.Client {
	if conf.MaxConnAge == 0 {
		conf.MaxConnAge = 30 * 60 * time.Second
	}
	if conf.DialTimeout == 0 {
		conf.DialTimeout = 5 * time.Second
	}
	if conf.WriteTimeout == 0 {
		conf.WriteTimeout = 3 * time.Second
	}
	if conf.ReadTimeout == 0 {
		conf.ReadTimeout = 3 * time.Second
	}
	opt := &redis.Options{
		Addr:         conf.Address,
		Password:     conf.Password,
		DB:           conf.DB,  
		MaxRetries:   conf.MaxRetries,
		DialTimeout:  conf.DialTimeout,   
		ReadTimeout:  conf.ReadTimeout,   
		WriteTimeout: conf.WriteTimeout,  
		PoolSize:     conf.PoolSize,
		PoolTimeout:  conf.PoolTimeout,
		MinIdleConns: conf.MinIdleConns,
		IdleTimeout:  conf.IdleTimeout,
		MaxConnAge:   conf.MaxConnAge,
	}
	return redis.NewClient(opt)
}
GetClient return redis client
package goredis
import (
	"encoding/json"
	"errors"
	"time"
	"github.com/go-redis/redis"
)
var RedisClientList = map[string]*redis.Client{}
var HashDefaultExpire int64 = 300  
type RedisClientConf struct {
	Address string
	Password string
	DB int
	MaxRetries int
	DialTimeout time.Duration
	ReadTimeout time.Duration
	WriteTimeout time.Duration
	PoolSize int
	PoolTimeout time.Duration
	MinIdleConns int
	IdleTimeout time.Duration
	MaxConnAge time.Duration
}
type RedisClusterConf struct {
	AddressNodes []string
	Password string
	MaxRetries int
	DialTimeout  time.Duration  
	ReadTimeout  time.Duration
	WriteTimeout time.Duration
	PoolSize int
	PoolTimeout time.Duration
	MinIdleConns int
	IdleTimeout time.Duration
	MaxConnAge time.Duration
}