Merge pull request #590 from Beckn-One/fix/add_tls_support_589

fix : add the tls support for the redis cache
This commit is contained in:
Mayuresh A Nirhali
2026-01-13 08:55:38 +05:30
committed by GitHub
3 changed files with 28 additions and 4 deletions

View File

@@ -601,8 +601,19 @@ cache:
addr: 10.81.192.4:6379
```
**Or with TLS enabled:**
```yaml
cache:
id: cache
config:
addr: redis.example.com:6380
use_tls: "true"
```
**Parameters**:
- `addr`: Redis server address and port
- `use_tls`: Enable TLS connection to Redis (`"true"` to enable, omit or any other value to disable). Default: disabled.
---

View File

@@ -2,6 +2,7 @@ package cache
import (
"context"
"crypto/tls"
"errors"
"fmt"
"os"
@@ -31,7 +32,8 @@ type RedisClient interface {
// Config holds the configuration required to connect to Redis.
type Config struct {
Addr string
Addr string
UseTLS bool
}
// Cache wraps a Redis client to provide basic caching operations.
@@ -46,6 +48,7 @@ var (
ErrAddrMissing = errors.New("missing required field 'Addr'")
ErrCredentialMissing = errors.New("missing Redis credentials in environment")
ErrConnectionFail = errors.New("failed to connect to Redis")
ErrInvalidUseTLS = errors.New("use_tls must be a boolean")
)
// validate checks if the provided Redis configuration is valid.
@@ -56,17 +59,26 @@ func validate(cfg *Config) error {
if cfg.Addr == "" {
return ErrAddrMissing
}
if cfg.UseTLS != true && cfg.UseTLS != false {
return ErrInvalidUseTLS
}
return nil
}
// RedisClientFunc is a function variable that creates a Redis client based on the provided configuration.
// It can be overridden for testing purposes.
var RedisClientFunc = func(cfg *Config) RedisClient {
return redis.NewClient(&redis.Options{
opts := &redis.Options{
Addr: cfg.Addr,
Password: os.Getenv("REDIS_PASSWORD"),
DB: 0,
})
}
if cfg.UseTLS {
opts.TLSConfig = &tls.Config{}
}
return redis.NewClient(opts)
}
// New initializes and returns a Cache instance along with a close function to release resources.

View File

@@ -19,7 +19,8 @@ func (c cacheProvider) New(ctx context.Context, config map[string]string) (defin
}
// Create cache.Config directly from map - validation is handled by cache.New
cacheConfig := &cache.Config{
Addr: config["addr"],
Addr: config["addr"],
UseTLS: config["use_tls"] == "true",
}
log.Debugf(ctx, "Cache config mapped: %+v", cacheConfig)
cache, closer, err := cache.New(ctx, cacheConfig)