From 6a5052c76ae1cbb36ef60c106146db281fa7b4d0 Mon Sep 17 00:00:00 2001 From: hantmac Date: Tue, 27 Oct 2020 18:17:31 +0800 Subject: [PATCH] support redis password contains special char Signed-off-by: hantmac --- backend/database/redis.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/backend/database/redis.go b/backend/database/redis.go index e87b688f..c14b9a16 100644 --- a/backend/database/redis.go +++ b/backend/database/redis.go @@ -9,6 +9,7 @@ import ( "github.com/cenkalti/backoff/v4" "github.com/gomodule/redigo/redis" "github.com/spf13/viper" + "net/url" "runtime/debug" "strings" "time" @@ -167,17 +168,17 @@ func NewRedisPool() *redis.Pool { var address = viper.GetString("redis.address") var port = viper.GetString("redis.port") var database = viper.GetString("redis.database") - var password = viper.GetString("redis.password") + var password = url.QueryEscape(viper.GetString("redis.password")) - var url string + var redisUrl string if password == "" { - url = "redis://" + address + ":" + port + "/" + database + redisUrl = "redis://" + address + ":" + port + "/" + database } else { - url = "redis://x:" + password + "@" + address + ":" + port + "/" + database + redisUrl = "redis://x:" + password + "@" + address + ":" + port + "/" + database } return &redis.Pool{ Dial: func() (conn redis.Conn, e error) { - return redis.DialURL(url, + return redis.DialURL(redisUrl, redis.DialConnectTimeout(time.Second*10), redis.DialReadTimeout(time.Second*600), redis.DialWriteTimeout(time.Second*10),