add changes

This commit is contained in:
AD2025
2025-11-13 23:04:27 +02:00
parent ec6534fcc2
commit 9746cfbc79
3 changed files with 429 additions and 17 deletions

View File

@@ -12,19 +12,26 @@ const redisConfig = {
password: process.env.REDIS_PASSWORD || undefined,
db: parseInt(process.env.REDIS_DB) || 0,
retryStrategy: (times) => {
// Stop retrying after 3 attempts in development
if (process.env.NODE_ENV === 'development' && times > 3) {
logger.info('Redis unavailable - caching disabled (optional feature)');
return null; // Stop retrying
}
const delay = Math.min(times * 50, 2000);
return delay;
},
maxRetriesPerRequest: 3,
enableReadyCheck: true,
enableOfflineQueue: true,
lazyConnect: false,
connectTimeout: 10000,
lazyConnect: true, // Don't connect immediately
connectTimeout: 5000, // Reduced timeout
keepAlive: 30000,
family: 4, // IPv4
// Connection pool settings
minReconnectInterval: 100,
maxReconnectInterval: 3000
maxReconnectInterval: 3000,
// Reduce logging noise
showFriendlyErrorStack: process.env.NODE_ENV !== 'development'
};
// Create Redis client
@@ -34,6 +41,14 @@ let isConnected = false;
try {
redisClient = new Redis(redisConfig);
// Attempt initial connection
redisClient.connect().catch(() => {
// Silently fail if Redis is not available in development
if (process.env.NODE_ENV === 'development') {
logger.info('Redis not available - continuing without cache (optional)');
}
});
// Connection events
redisClient.on('connect', () => {
logger.info('Redis client connecting...');
@@ -46,27 +61,41 @@ try {
redisClient.on('error', (err) => {
isConnected = false;
logger.error('Redis client error:', err);
// Only log errors in production or first error
if (process.env.NODE_ENV === 'production' || !errorLogged) {
logger.error('Redis client error:', err.message || err);
errorLogged = true;
}
});
redisClient.on('close', () => {
isConnected = false;
logger.warn('Redis client connection closed');
if (isConnected) {
isConnected = false;
logger.warn('Redis client connection closed');
}
});
redisClient.on('reconnecting', () => {
logger.info('Redis client reconnecting...');
// Only log once
if (isConnected === false) {
logger.info('Redis client reconnecting...');
}
});
redisClient.on('end', () => {
isConnected = false;
logger.warn('Redis client connection ended');
if (isConnected) {
isConnected = false;
logger.info('Redis connection ended');
}
});
} catch (error) {
logger.error('Failed to create Redis client:', error);
}
// Track if error has been logged
let errorLogged = false;
/**
* Check if Redis is connected
*/