package cache import ( "context" "fmt" "time" "github.com/redis/go-redis/v9" "github.com/tdvorak/seen/backend/internal/config" "go.uber.org/zap" ) func NewClient(ctx context.Context, cfg config.CacheConfig, log *zap.Logger) (*redis.Client, error) { client := redis.NewClient(&redis.Options{ Addr: cfg.Addr, Password: cfg.Password, DB: cfg.DB, DialTimeout: 5 * time.Second, ReadTimeout: 3 * time.Second, WriteTimeout: 3 * time.Second, }) if err := client.Ping(ctx).Err(); err != nil { return nil, fmt.Errorf("ping dragonfly: %w", err) } log.Info("dragonfly connected", zap.String("addr", cfg.Addr), zap.Int("db", cfg.DB)) return client, nil }