summaryrefslogtreecommitdiff
path: root/backend/src/database/redis.ts
blob: 06773b90945e09608adff409af8272c646671cd1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import { createClient } from "redis";

const redisClient = createClient({
    username: process.env.REDIS_USER,
    password: process.env.REDIS_PASSWORD,
    socket: {
        host: process.env.REDIS_HOST,
        port: process.env.REDIS_PORT ? parseInt(process.env.REDIS_PORT) : 13080,
        reconnectStrategy: (retries) => {
            if (retries > 10) {
                console.error("Redis Verbindunsversuche erschöpft.");
                return new Error(
                    "Redis Verbindung nach 10 Versuchen Fehlgeschlagen."
                );
            }
            console.log(`Redis Verbindungsversuch ${retries} von 10`);
            return 3000;
        },
    },
});

redisClient.on("error", (error) => {
    console.error("Redis Fehler: ", error);
});

async function connectRedis() {
    try {
        await redisClient.connect();
        console.log("Erfolgreich mit Redis verbunden.");
    } catch (error) {
        // Server läuft ohne Cache weiter
        console.error("Verbindung zu Redis fehlgeschlagen: ", error);
    }
}

await connectRedis();

export async function closeRedisConnection() {
    try {
        if (redisClient.isOpen) {
            await redisClient.quit();
            console.log("Redis-Verbindung erfolgreich beendet.");
        }
    } catch (error) {
        console.error("Fehler beim Beenden der Redis-Verbindung: ", error);
    }
}

export default redisClient;