casualroom/apps/fenghuo/api/src/redis.ts

59 lines
1.3 KiB
TypeScript
Executable File

// 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;