add changes
This commit is contained in:
@@ -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
|
||||
*/
|
||||
|
||||
Reference in New Issue
Block a user