Add ClusterOptions.NewClient hook

Replaces https://github.com/go-redis/redis/pull/1316
This commit is contained in:
Vladimir Mihailenco 2020-05-21 09:34:51 +03:00
parent 2960952204
commit f8e2e89878
1 changed files with 8 additions and 3 deletions

View File

@ -68,6 +68,9 @@ type ClusterOptions struct {
ReadTimeout time.Duration ReadTimeout time.Duration
WriteTimeout time.Duration WriteTimeout time.Duration
// NewClient creates a cluster node client with provided name and options.
NewClient func(opt *Options) *Client
// PoolSize applies per cluster node and not for the whole cluster. // PoolSize applies per cluster node and not for the whole cluster.
PoolSize int PoolSize int
MinIdleConns int MinIdleConns int
@ -77,7 +80,6 @@ type ClusterOptions struct {
IdleCheckFrequency time.Duration IdleCheckFrequency time.Duration
TLSConfig *tls.Config TLSConfig *tls.Config
Limiter Limiter
} }
func (opt *ClusterOptions) init() { func (opt *ClusterOptions) init() {
@ -120,6 +122,10 @@ func (opt *ClusterOptions) init() {
case 0: case 0:
opt.MaxRetryBackoff = 512 * time.Millisecond opt.MaxRetryBackoff = 512 * time.Millisecond
} }
if opt.NewClient == nil {
opt.NewClient = NewClient
}
} }
func (opt *ClusterOptions) clientOptions() *Options { func (opt *ClusterOptions) clientOptions() *Options {
@ -148,7 +154,6 @@ func (opt *ClusterOptions) clientOptions() *Options {
IdleCheckFrequency: disableIdleCheck, IdleCheckFrequency: disableIdleCheck,
TLSConfig: opt.TLSConfig, TLSConfig: opt.TLSConfig,
Limiter: opt.Limiter,
} }
} }
@ -166,7 +171,7 @@ func newClusterNode(clOpt *ClusterOptions, addr string) *clusterNode {
opt := clOpt.clientOptions() opt := clOpt.clientOptions()
opt.Addr = addr opt.Addr = addr
node := clusterNode{ node := clusterNode{
Client: NewClient(opt), Client: clOpt.NewClient(opt),
} }
node.latency = math.MaxUint32 node.latency = math.MaxUint32