// apps/api/src/redis.ts import Redis from 'ioredis'; const redis = new Redis({ host: process.env.REDIS_HOST || 'redis', port: parseInt(process.env.REDIS_PORT || '6379'), password: process.env.REDIS_PASSWORD, connectTimeout: 10000, lazyConnect: true, maxRetriesPerRequest: 3, }); // 连接事件监听 redis.on('connect', () => { console.log('Redis连接成功'); }); redis.on('ready', () => { console.log('Redis准备就绪'); }); redis.on('error', (err) => { console.error('Redis连接错误:', err); }); redis.on('close', () => { console.log('Redis连接已关闭'); }); redis.on('reconnecting', () => { console.log('Redis重新连接中...'); }); // 优雅关闭处理 process.on('SIGINT', async () => { console.log('正在关闭Redis连接...'); await redis.disconnect(); process.exit(0); }); process.on('SIGTERM', async () => { console.log('正在关闭Redis连接...'); await redis.disconnect(); process.exit(0); }); // Redis连接初始化和健康检查 export const initRedis = async () => { try { await redis.ping(); console.log('Redis连接测试成功'); return true; } catch (error) { console.error('Redis连接测试失败:', error); return false; } }; export default redis;