54 lines
1.2 KiB
JavaScript
54 lines
1.2 KiB
JavaScript
import { createClient } from "redis";
|
|
import dotenv from 'dotenv';
|
|
|
|
dotenv.config();
|
|
|
|
// 创建 Redis 客户端,优化配置
|
|
const redis = createClient({
|
|
RESP: 3,
|
|
url: process.env.REDIS_URL || 'redis://localhost:6379',
|
|
// 优化连接配置
|
|
socket: {
|
|
// 连接超时时间
|
|
connectTimeout: 10000,
|
|
// 保持活动状态
|
|
keepAlive: 30000,
|
|
// 重试策略
|
|
reconnectStrategy: (retries) => {
|
|
// 最多重试 5 次
|
|
if (retries > 5) {
|
|
return new Error('Redis reconnect failed after 5 attempts');
|
|
}
|
|
// 指数退避策略
|
|
return Math.min(retries * 1000, 5000);
|
|
}
|
|
},
|
|
// 禁用不必要的功能
|
|
legacyMode: false,
|
|
// 优化命令队列
|
|
enableReadyCheck: true,
|
|
// 最大命令队列长度
|
|
maxRetriesPerRequest: 3
|
|
});
|
|
|
|
// 连接事件
|
|
redis.on('connect', () => {
|
|
console.log('Redis 连接成功');
|
|
});
|
|
|
|
redis.on('error', (err) => {
|
|
console.error('Redis 连接错误:', err);
|
|
});
|
|
|
|
redis.on('reconnecting', () => {
|
|
console.log('Redis 正在重连...');
|
|
});
|
|
|
|
redis.on('end', () => {
|
|
console.log('Redis 连接已关闭');
|
|
});
|
|
|
|
// 导出前自动连接
|
|
redis.connect().catch(console.error);
|
|
export default redis;
|