diff --git a/redis/redis.go b/redis/redis.go
index 3b9900fd97be9fe53155440fcab29c1890b87f5f..b5c392bbfe2694382aeaf0ac5bf6e2c0fa61806b 100644
--- a/redis/redis.go
+++ b/redis/redis.go
@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"math"
+	"os"
 	"strings"
 	"time"
 
@@ -16,13 +17,53 @@ import (
 	"github.com/go-redis/redis/v8"
 )
 
-var ctx = context.Background()
+var (
+	ctx         = context.Background()
+	redisClient *ClientWithHelpers
+)
 
 type ClientWithHelpers struct {
 	Client    *redis.Client
 	Available bool
 }
 
+func GetRedisClient(isDebug bool) *ClientWithHelpers {
+	if redisClient != nil && redisClient.IsConnected() {
+		return redisClient
+	}
+	redisClient = connectToRedis(isDebug)
+	return redisClient
+}
+
+func connectToRedis(isDebug bool) *ClientWithHelpers {
+	if os.Getenv("REDIS_HOST") != "false" {
+
+		host := os.Getenv("REDIS_HOST")
+		port := os.Getenv("REDIS_PORT")
+
+		if isDebug {
+			env := os.Getenv("ENVIRONMENT")
+			switch env {
+			case "dev":
+				port = "6380"
+			case "stage":
+				port = "6381"
+			case "sandbox", "qa":
+				port = "6382"
+			case "prod":
+				port = "6383"
+			}
+		}
+
+		return NewClient(host + ":" + port)
+	}
+
+	return &ClientWithHelpers{
+		Client:    nil,
+		Available: false,
+	}
+}
+
 func NewClient(addr string) *ClientWithHelpers {
 	return &ClientWithHelpers{
 		Client: redis.NewClient(&redis.Options{