diff --git a/apps/web/src/utils/redis.ts b/apps/web/src/utils/redis.ts new file mode 100644 index 00000000..fb4c405a --- /dev/null +++ b/apps/web/src/utils/redis.ts @@ -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 { + if (redisClient) { + await redisClient.quit(); + redisClient = null; + } +} + +