diff --git a/plugins/inputs/redis/redis.go b/plugins/inputs/redis/redis.go
index fc50387df3ef71d100232ce40bdd1b6ebc6d3b14..649786c2c4e56f015f63f47a03bd1e6a1eaac67a 100644
--- a/plugins/inputs/redis/redis.go
+++ b/plugins/inputs/redis/redis.go
@@ -12,6 +12,7 @@ import (
 	"time"
 
 	"github.com/influxdata/telegraf"
+	"github.com/influxdata/telegraf/internal/errchan"
 	"github.com/influxdata/telegraf/plugins/inputs"
 )
 
@@ -96,9 +97,7 @@ func (r *Redis) Gather(acc telegraf.Accumulator) error {
 	}
 
 	var wg sync.WaitGroup
-
-	var outerr error
-
+	errChan := errchan.New(len(r.Servers))
 	for _, serv := range r.Servers {
 		if !strings.HasPrefix(serv, "tcp://") || !strings.HasPrefix(serv, "unix://") {
 			serv = "tcp://" + serv
@@ -123,13 +122,12 @@ func (r *Redis) Gather(acc telegraf.Accumulator) error {
 		wg.Add(1)
 		go func(serv string) {
 			defer wg.Done()
-			outerr = r.gatherServer(u, acc)
+			errChan.C <- r.gatherServer(u, acc)
 		}(serv)
 	}
 
 	wg.Wait()
-
-	return outerr
+	return errChan.Error()
 }
 
 func (r *Redis) gatherServer(addr *url.URL, acc telegraf.Accumulator) error {