feat: add redis

This commit is contained in:
2024-09-23 01:21:26 +08:00
parent a8f80abc88
commit 63df5ba800
4 changed files with 107 additions and 0 deletions

View File

@@ -1,8 +1,12 @@
import { App } from '@abearxiong/router';
import { useConfig } from '@abearxiong/use-config';
import { dynamicImport } from './lib/dynamic-import.ts';
import { redisPublisher } from './modules/redis.ts';
useConfig();
export const emit = (channel: string, message: string) => {
redisPublisher.publish(channel, message);
};
export const app = new App({
serverOptions: {
@@ -12,5 +16,6 @@ export const app = new App({
},
routerContext: {
import: dynamicImport,
emit,
},
});

34
src/modules/redis.ts Normal file
View File

@@ -0,0 +1,34 @@
import { Redis } from 'ioredis';
import { useConfig } from '@abearxiong/use-config';
const config = useConfig<{
redis: ConstructorParameters<typeof Redis>;
}>();
// 配置 Redis 连接
const redis = new Redis({
host: 'localhost', // Redis 服务器的主机名或 IP 地址
port: 6379, // Redis 服务器的端口号
// password: 'your_password', // Redis 的密码 (如果有)
db: 0, // 要使用的 Redis 数据库索引 (0-15)
keyPrefix: '', // key 前缀
retryStrategy(times) {
// 连接重试策略
return Math.min(times * 50, 2000); // 每次重试时延迟增加
},
maxRetriesPerRequest: null, // 允许请求重试的次数 (如果需要无限次重试)
...config.redis,
});
// 监听连接事件
redis.on('connect', () => {
console.log('Redis 连接成功');
});
redis.on('error', (err) => {
console.error('Redis 连接错误', err);
});
// 初始化 Redis 客户端
export const redisPublisher = new Redis(); // 用于发布消息
export const redisSubscriber = new Redis(); // 用于订阅消息