feat: unique redis addrs and trim spaces (#3004)

This commit is contained in:
Kevin Wan
2023-03-10 16:09:07 +08:00
committed by GitHub
parent 3c9fe0b381
commit 7a0c04bc21
3 changed files with 62 additions and 3 deletions

View File

@@ -9,6 +9,8 @@ import (
"github.com/zeromicro/go-zero/core/syncx"
)
const addrSep = ","
var clusterManager = syncx.NewResourceManager()
func getCluster(r *Redis) (*red.ClusterClient, error) {
@@ -20,7 +22,7 @@ func getCluster(r *Redis) (*red.ClusterClient, error) {
}
}
store := red.NewClusterClient(&red.ClusterOptions{
Addrs: strings.Split(r.Addr, ","),
Addrs: splitClusterAddrs(r.Addr),
Password: r.Pass,
MaxRetries: maxRetries,
MinIdleConns: idleConns,
@@ -36,3 +38,18 @@ func getCluster(r *Redis) (*red.ClusterClient, error) {
return val.(*red.ClusterClient), nil
}
func splitClusterAddrs(addr string) []string {
addrs := strings.Split(addr, addrSep)
unique := make(map[string]struct{})
for _, each := range addrs {
unique[strings.TrimSpace(each)] = struct{}{}
}
addrs = addrs[:0]
for k := range unique {
addrs = append(addrs, k)
}
return addrs
}