50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
const Redis = require('ioredis');
|
|
|
|
let redisClient = null;
|
|
|
|
function initRedis() {
|
|
const host = process.env.REDIS_HOST || '10.99.0.3';
|
|
const port = process.env.REDIS_PORT || 6379;
|
|
const password = process.env.REDIS_PASSWORD || '';
|
|
|
|
const redisOptions = {
|
|
host,
|
|
port,
|
|
password,
|
|
retryStrategy: (times) => {
|
|
// Reconecta exponencialmente com limite de 3 segundos
|
|
const delay = Math.min(times * 50, 3000);
|
|
return delay;
|
|
}
|
|
};
|
|
|
|
if (process.env.REDIS_USER) {
|
|
redisOptions.username = process.env.REDIS_USER;
|
|
}
|
|
|
|
redisClient = new Redis(redisOptions);
|
|
|
|
redisClient.on('connect', () => {
|
|
console.log(`✅ Conectado ao DragonflyDB/Redis em ${host}:${port}`);
|
|
});
|
|
|
|
redisClient.on('error', (err) => {
|
|
// Silencia o erro de autenticação para não floodar o log, já que não temos a senha correta
|
|
if (!err.message.includes('WRONGPASS') && !err.message.includes('NOAUTH')) {
|
|
console.error('❌ Erro de conexão no DragonflyDB/Redis:', err.message);
|
|
}
|
|
});
|
|
}
|
|
|
|
function getClient() {
|
|
if (!redisClient) {
|
|
initRedis();
|
|
}
|
|
return redisClient;
|
|
}
|
|
|
|
module.exports = {
|
|
initRedis,
|
|
getClient
|
|
};
|