feat: setup redis client
This commit is contained in:
34
apps/web/src/utils/redis.ts
Normal file
34
apps/web/src/utils/redis.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import Redis from "ioredis";
|
||||||
|
|
||||||
|
import { env } from "~/env";
|
||||||
|
|
||||||
|
let redisClient: Redis | null = null;
|
||||||
|
|
||||||
|
export function getRedisClient(): Redis | null {
|
||||||
|
if (redisClient) {
|
||||||
|
return redisClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
const redisUrl = env.REDIS_URL;
|
||||||
|
|
||||||
|
if (!redisUrl) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
redisClient = new Redis(redisUrl, {
|
||||||
|
maxRetriesPerRequest: 3,
|
||||||
|
enableReadyCheck: true,
|
||||||
|
lazyConnect: true,
|
||||||
|
});
|
||||||
|
|
||||||
|
return redisClient;
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function closeRedisClient(): Promise<void> {
|
||||||
|
if (redisClient) {
|
||||||
|
await redisClient.quit();
|
||||||
|
redisClient = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user