mirror of
https://github.com/R0m1k3/podcastic.git
synced 2026-10-21 14:08:03 +02:00
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
import { createClient } from 'redis';
|
|
|
|
let redisClient: ReturnType<typeof createClient> | null = null;
|
|
|
|
export const initRedis = async () => {
|
|
try {
|
|
const redisUrl = process.env.REDIS_URL || 'redis://localhost:6379';
|
|
|
|
redisClient = createClient({
|
|
url: redisUrl,
|
|
socket: {
|
|
reconnectStrategy: (retries) => {
|
|
if (retries > 10) {
|
|
console.error('✗ Redis max retries reached');
|
|
return new Error('Max retries');
|
|
}
|
|
return retries * 50;
|
|
},
|
|
},
|
|
});
|
|
|
|
redisClient.on('error', (err) => console.error('Redis error:', err));
|
|
redisClient.on('connect', () => console.log('✓ Redis connected'));
|
|
redisClient.on('reconnecting', () => console.log('→ Redis reconnecting...'));
|
|
|
|
await redisClient.connect();
|
|
return redisClient;
|
|
} catch (error) {
|
|
console.error('✗ Redis connection failed:', error);
|
|
process.exit(1);
|
|
}
|
|
};
|
|
|
|
export const getRedis = () => {
|
|
if (!redisClient) {
|
|
throw new Error('Redis not initialized');
|
|
}
|
|
return redisClient;
|
|
};
|
|
|
|
export const closeRedis = async () => {
|
|
if (redisClient) {
|
|
await redisClient.quit();
|
|
console.log('✓ Redis connection closed');
|
|
}
|
|
};
|