@@ -55,6 +55,29 @@ func NewRedisCache(ctx context.Context, metricPushInterval time.Duration) (redis
5555 MaxRetryBackoff : config .RedisCfg .RetryProperties .MaxRetryBackOff ,
5656 PoolSize : config .RedisCfg .PoolSize ,
5757 })
58+ case config .RedisTypeCluster :
59+ rawAddrs := strings .Split (config .RedisCfg .Address , "," )
60+ clusterAddrs := make ([]string , 0 , len (rawAddrs ))
61+ for _ , addr := range rawAddrs {
62+ trimmed := strings .TrimSpace (addr )
63+ if trimmed != "" {
64+ clusterAddrs = append (clusterAddrs , trimmed )
65+ }
66+ }
67+
68+ if len (clusterAddrs ) == 0 {
69+ return nil , errors .New ("redis cluster requires at least one address" )
70+ }
71+
72+ client = redis .NewClusterClient (& redis.ClusterOptions {
73+ Addrs : clusterAddrs ,
74+ MaxRetries : config .RedisCfg .RetryProperties .MaxRetries ,
75+ MinRetryBackoff : config .RedisCfg .RetryProperties .MinRetryBackOff ,
76+ MaxRetryBackoff : config .RedisCfg .RetryProperties .MaxRetryBackOff ,
77+ PoolSize : config .RedisCfg .PoolSize ,
78+ Username : config .RedisCfg .Username ,
79+ Password : config .RedisCfg .Password ,
80+ })
5881 default :
5982 return nil , fmt .Errorf ("unsupported or invalid redis deployment type: %q" , config .RedisCfg .Type )
6083 }
0 commit comments