2023-11-08 23:17:32 +00:00
|
|
|
import { createClient } from "redis";
|
|
|
|
|
2023-11-08 23:25:14 +00:00
|
|
|
let redisClient = await connectRedis();
|
2023-11-08 23:17:32 +00:00
|
|
|
|
2023-11-08 23:25:14 +00:00
|
|
|
async function connectRedis(): Promise<any> {
|
2023-11-08 23:17:32 +00:00
|
|
|
console.log("Connecting to redis");
|
|
|
|
const client = createClient({
|
|
|
|
url: process.env.REDIS_URL,
|
|
|
|
});
|
|
|
|
await client.connect();
|
|
|
|
|
|
|
|
client.on("connect", () => {
|
|
|
|
console.log("Connected to redis");
|
|
|
|
});
|
|
|
|
|
|
|
|
client.on("error", (error) => {
|
|
|
|
console.error("There was an error connecting to redis: " + error);
|
|
|
|
setTimeout(() => {
|
|
|
|
redisClient = connectRedis();
|
|
|
|
}, 5_000); // 5 seconds
|
|
|
|
});
|
|
|
|
|
|
|
|
return client;
|
|
|
|
}
|
|
|
|
|
|
|
|
// todo: add disconnect handler
|
|
|
|
|
|
|
|
export const Redis = {
|
|
|
|
client: redisClient,
|
|
|
|
connectRedis,
|
|
|
|
};
|