Zum Hauptinhalt springen

Database Query Caching

Speichern Sie teure Datenbankabfragen zwischen, um die Anwendungsleistung zu verbessern.

Implementierung

import { LRUCache } from '@msnkr/data-structures';

interface QueryResult {
rows: unknown[];
count: number;
}

const queryCache = new LRUCache<string, QueryResult>({ capacity: 50 });

function executeQuery(sql: string): QueryResult {
// Cache prüfen
const cached = queryCache.get(sql);
if (cached) {
console.log('Returning cached query result');
return cached;
}

// Abfrage ausführen (teure Operation)
const result = database.execute(sql);

// Ergebnis zwischenspeichern
queryCache.put(sql, result);

return result;
}

// Verwendung
const users = executeQuery('SELECT * FROM users WHERE active = true');
const sameUsers = executeQuery('SELECT * FROM users WHERE active = true'); // Cached!

Cache-Invalidierung

// Cache nach Datenänderung invalidieren
function updateUser(id: number, data: object): void {
database.update('users', id, data);

// Zugehörige Cache-Einträge löschen
queryCache.clear(); // Oder selektiv bestimmte Abfragen löschen
}

Siehe auch