From 8a38bdd54b3ade4b08c9f826fd805be437cadf91 Mon Sep 17 00:00:00 2001 From: Johan de Klerk <johan@shiplogic.com> Date: Wed, 29 Nov 2023 11:24:32 +0200 Subject: [PATCH] Connect to redis client --- redis/redis.go | 43 ++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/redis/redis.go b/redis/redis.go index 3b9900f..b5c392b 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{ -- GitLab