From f3ed749471656b09b0fbd80934c24911bfa4b9ee Mon Sep 17 00:00:00 2001 From: "lance.wang" Date: Tue, 13 Sep 2022 17:31:36 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=94=AF=E6=8C=81=E4=BD=BF=E7=94=A8ipv?= =?UTF-8?q?6=E5=9C=B0=E5=9D=80=E7=9A=84redis=E9=9B=86=E7=BE=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/writer/redis_cluster.go | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/internal/writer/redis_cluster.go b/internal/writer/redis_cluster.go index ba84431..f6b4afa 100644 --- a/internal/writer/redis_cluster.go +++ b/internal/writer/redis_cluster.go @@ -1,6 +1,7 @@ package writer import ( + "fmt" "github.com/alibaba/RedisShake/internal/client" "github.com/alibaba/RedisShake/internal/entry" "github.com/alibaba/RedisShake/internal/log" @@ -41,6 +42,17 @@ func (r *RedisClusterWriter) loadClusterNodes(address string, username string, p log.Infof("redisClusterWriter load cluster nodes. line=%v", line) // address address := strings.Split(words[1], "@")[0] + + // handle ipv6 address + tok := strings.Split(address, ":") + if len(tok) > 2 { + // ipv6 address + port := tok[len(tok)-1] + + ipv6Addr := strings.Join(tok[:len(tok)-1], ":") + address = fmt.Sprintf("[%s]:%s", ipv6Addr, port) + } + r.addresses = append(r.addresses, address) // writers redisWriter := NewRedisWriter(address, username, password, isTls)