diff --git a/database/gredis/gredis.go b/database/gredis/gredis.go index 2a2b008ba..9b7d2d173 100644 --- a/database/gredis/gredis.go +++ b/database/gredis/gredis.go @@ -46,6 +46,8 @@ type Config struct { IdleTimeout time.Duration // Maximum idle time for connection (default is 10 seconds, not allowed to be set to 0) MaxConnLifetime time.Duration // Maximum lifetime of the connection (default is 30 seconds, not allowed to be set to 0) ConnectTimeout time.Duration // Dial connection timeout. + TLS bool // Specifies the config to use when a TLS connection is dialed. + TLSSkipVerify bool // Disables server name verification when connecting over TLS } // Pool statistics. @@ -102,6 +104,8 @@ func New(config Config) *Redis { "tcp", fmt.Sprintf("%s:%d", config.Host, config.Port), redis.DialConnectTimeout(config.ConnectTimeout), + redis.DialUseTLS(config.TLS), + redis.DialTLSSkipVerify(config.TLSSkipVerify), ) if err != nil { return nil, err diff --git a/database/gredis/gredis_config.go b/database/gredis/gredis_config.go index eab96d73d..c8c2b9b01 100644 --- a/database/gredis/gredis_config.go +++ b/database/gredis/gredis_config.go @@ -110,6 +110,12 @@ func ConfigFromStr(str string) (config Config, err error) { if v, ok := parse["maxConnLifetime"]; ok { config.MaxConnLifetime = gconv.Duration(v) * time.Second } + if v, ok := parse["tls"]; ok { + config.TLS = gconv.Bool(v) + } + if v, ok := parse["skipVerify"]; ok { + config.TLSSkipVerify = gconv.Bool(v) + } return } array, _ = gregex.MatchString(`([^:]+):*(\d*),{0,1}(\d*),{0,1}(.*)`, str)