Initial cloud-services repo - gateway service + pkg modules

This commit is contained in:
Chris Rai
2026-01-30 23:14:52 -05:00
commit fbb820d7b3
1037 changed files with 171318 additions and 0 deletions

79
pkg/redis/pool.go Normal file
View File

@@ -0,0 +1,79 @@
package redis
import (
"fmt"
"time"
"fiskerinc.com/modules/logger"
"fiskerinc.com/modules/utils/envtool"
"github.com/gomodule/redigo/redis"
"github.com/pkg/errors"
redigotrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/gomodule/redigo"
)
// connection vars
var (
host = envtool.GetEnv("REDIS_HOST", "localhost")
port = envtool.GetEnv("REDIS_PORT", "6379")
password = envtool.GetEnv("REDIS_PASSWORD", "REPLACE_ME")
addr = fmt.Sprintf("%v:%v", host, port)
)
func UpdateRedisConnection(redisHost string, redisPort string, redisPassword string) {
host = redisHost
port = redisPort
password = redisPassword
addr = fmt.Sprintf("%v:%v", host, port)
}
// Pool provides redis connections
type Pool interface {
Get() redis.Conn
Stats() redis.PoolStats
ActiveCount() int
}
func NewPool() Pool {
return &redis.Pool{
IdleTimeout: time.Millisecond * time.Duration(envtool.GetEnvInt("REDIS_IDLETIMEOUT_MS", 1000)),
MaxIdle: envtool.GetEnvInt("REDIS_MAXIDLECONN", 10),
MaxActive: envtool.GetEnvInt("REDIS_MAXACTIVECONN", 10),
MaxConnLifetime: time.Millisecond * time.Duration(envtool.GetEnvInt("REDIS_MAXCONNLIFETIME_MS", 1000)),
Wait: (envtool.GetEnvInt("REDIS_WAITGETCONN", 0) == 1),
Dial: func() (redis.Conn, error) {
conn, err := redigotrace.Dial("tcp", addr, redis.DialKeepAlive(time.Minute*time.Duration(envtool.GetEnvInt("REDIS_KEEPALIVE_MINS", 10))))
if password == "" {
return conn, errors.WithStack(err)
}
if err != nil {
logger.Error().Err(errors.WithStack(err)).Send()
return nil, err
}
if _, err := conn.Do("AUTH", password); err != nil {
conn.Close()
logger.Error().Err(errors.WithStack(err)).Send()
return nil, err
}
return conn, nil
},
TestOnBorrow: func(c redis.Conn, t time.Time) error {
_, err := c.Do("PING")
return err
},
}
}
type Conn interface {
Do(string, ...interface{}) (interface{}, error)
DoWithTimeout(time.Duration, string, ...interface{}) (interface{}, error)
Receive() (interface{}, error)
ReceiveWithTimeout(time.Duration) (interface{}, error)
Send(string, ...interface{}) error
Err() error
Close() error
Flush() error
}