pg_local_cache lokal ausprobieren
Diese Demo baut pg_local_cache aus Ihrem Checkout in einem separaten PostgreSQL- 16-Server. Sie installiert nicht in einem bestehenden PostgreSQL-Server.
Sie benötigen Git, Docker und Docker Compose mit Unterstützung für up --wait.
Das Image wird aus dem Quellcode gebaut.
Datenbank starten
git clone https://github.com/profundium/pg_local_cache.git
cd pg_local_cache
docker compose -f examples/compose.yaml up --build --wait
Die Demo bindet PostgreSQL an 127.0.0.1:55432, hat keinen RESP-Listener und
kein dauerhaftes Volume und speichert Daten in containerlokalem tmpfs. Beim
Stoppen des Containers werden die Daten verworfen. demo-only ist für diese
Loopback-Demo gedacht; verwenden Sie in Produktion eigene Zugangsdaten.
Wenn Port 55432 belegt ist, setzen Sie vor dem Start von Compose
PGLC_DEMO_PORT und lassen Sie es beim Ausführen des Node.js-Beispiels gesetzt:
export PGLC_DEMO_PORT=55433
Als Anwendungsrolle lesen
Die Einrichtung erstellt 4.096 Zeilen in public.items. Nur diese Tabelle ist
an den Cache angehängt. Die Rolle demo ist kein Superuser.
docker compose -f examples/compose.yaml exec -T postgres \
psql -X -v ON_ERROR_STOP=1 -U demo -d pglc_demo <<'SQL'
SELECT unnest(local_cache.mget(
'public.items'::regclass,
ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SELECT unnest(local_cache.mget(
'public.items'::regclass,
ARRAY[42, 7, 42, NULL, 999999]::bigint[]
));
SQL
Beide Aufrufe geben dieselben geordneten Zeilen zurück. Die erste und dritte
Position beziehen sich auf Zeile 42. Die letzten beiden Positionen sind SQL-
NULL: Eine Eingabe ist null, und der Schlüssel 999999 existiert nicht. In
psql erscheinen SQL-Nullwerte standardmäßig leer.
Die Funktion gibt text[] zurück. unnest zeigt oben einen Array-Eintrag pro
Zeile an.
Prüfen Sie die Zähler als Datenbankadministrator:
docker compose -f examples/compose.yaml exec -T postgres \
psql -X -v ON_ERROR_STOP=1 -U postgres -d pglc_demo \
-c 'SELECT local_cache.health();' \
-c 'SELECT local_cache.stats();'
In dieser frischen Demo sollte local_cache.health() ready: true melden, und
wiederholte Lesevorgänge sollten sql_cache_hits erhöhen. Wenn die Trefferzahl
bei null bleibt, prüfen Sie sql_cache_misses, sql_cache_fills und
sql_cache_bypasses mit dem Invalidation-Leitfaden.
Commit und Rollback prüfen
Mit Node.js 20 oder neuer:
npm --prefix examples/node-postgres ci --ignore-scripts
npm --prefix examples/node-postgres run demo
Der Test öffnet getrennte Lese- und Schreibverbindungen. Er prüft einen warmen Treffer, Eingabereihenfolge, doppelte und fehlende Schlüssel, ein nicht bestätigtes Update, Read-your-writes, Rollback und ein bestätigtes Update. Bei einer fehlgeschlagenen Assertion endet er mit einem Fehlercode.
Siehe den SQL-Rundgang mit zwei Sitzungen oder die Erklärung der Node.js-Abfrage.
Ihre Anwendung verbinden
- Node.js: Verwenden Sie Ihre bestehende
pg-Verbindung oder Ihren Pool. - Go: Verbinden Sie sich mit
pgxund dekodieren Sie die zurückgegebenen Zeilen. - RESP: Aktivieren Sie den optionalen Endpunkt und verbinden Sie sich mit einem Redis-Client.
Als Nächstes vergleichen Sie dieselbe SQL- und RESP-Arbeitslast. Bei Ergebnis- oder Einrichtungsproblemen öffnen Sie einen Workload-Bericht mit Ihrer Umgebung sowie Benchmark-JSON oder Fehlerprotokoll.
Demo entfernen
docker compose -f examples/compose.yaml down
Das lokal gebaute Docker-Image bleibt für einen weiteren Lauf verfügbar. Kein hosteigener PostgreSQL-Dienst muss neu gestartet oder wiederhergestellt werden.
Für eine bestehende Datenbank folgen Sie dem Installationsleitfaden. Dieser Weg hat andere Berechtigungen, Konfigurationen und Neustartanforderungen.
Aktualisiert .