Braucht man Redis? PostgreSQL bietet Queueing, Locking und Pub/Sub (2021)
(spin.atomicobject.com)-
Anwendungsfall 1: Job-Queueing
- Redis wird in Webdiensten häufig verwendet, um Hintergrundjobs zu koordinieren.
- Seit PostgreSQL Version 9.5 lässt sich Job-Queueing mit der Option
SKIP LOCKEDimplementieren. - Diese Option ermöglicht die Auswahl von Jobs ohne auf Sperren zu warten und stellt sicher, dass mehrere Worker nicht denselben Job gleichzeitig verarbeiten.
-
Anwendungsfall 2: Application Locking
- Redis wird häufig für verteilte Sperren verwendet.
- Mit den Advisory Locks von PostgreSQL lässt sich dieselbe Funktionalität umsetzen.
- Advisory Locks erlauben es, die interne Sperr-Engine von PostgreSQL für anwendungsdefinierte Zwecke zu nutzen.
-
Anwendungsfall 3: Pub/Sub
- Redis wird verwendet, um Events an aktive Clients zu pushen.
- Seit PostgreSQL Version 9 bietet es mit den Anweisungen
LISTENundNOTIFYPub/Sub-Funktionalität. - PostgreSQL-Clients können einen bestimmten Nachrichtenkanal abonnieren, und wenn ein anderer Client eine Nachricht an diesen Kanal sendet, erhalten alle Abonnenten eine Benachrichtigung.
-
PostgreSQL voll ausschöpfen
- Redis wird für andere Zwecke als PostgreSQL eingesetzt und ist hervorragend für das Caching von Daten mit TTL sowie für die Speicherung temporärer Daten geeignet.
- PostgreSQL bietet mehr als nur eine SQL-Datenbank und könnte Aufgaben, für die Redis genutzt wird, möglicherweise ersetzen.
- Das kann eine lohnende Wahl sein, um die Komplexität mehrerer Datendienste zu verringern und Betriebskosten zu senken.
1 Kommentare
Hacker-News-Kommentare
Redis bietet sehr schnelle Reaktionszeiten, wenn es auf derselben Maschine wie die Anwendung läuft. Dadurch sind andere Workloads möglich als mit Postgres.
PostgreSQL bietet mehr als nur die Funktionen einer einfachen SQL-Datenbank.
PGQueuer ist eine minimale Alternative auf Basis von PostgreSQL, die Job-Queues, Sperren und Echtzeitbenachrichtigungen bietet.
Postgres ist eine leistungsfähige Datenbank.
Die meisten Projekte brauchen nur eine einfache Job-Queue, und es ist wichtig, einen komplexen Stack zu vereinfachen.
Postgres hat einige Einschränkungen.
Es ist sinnvoll, mit PostgreSQL zu beginnen und bei Bedarf auf Redis umzusteigen.
Ein großer Nachteil von Postgres-Pub/Sub ist, dass die Nachrichtengröße auf 8000 Byte begrenzt ist.
Caching, eine der wichtigsten Anwendungen von Redis, ist in Postgres komplizierter.
Wenn man diese Funktionen in Postgres nutzt, werden Updates und Replikation schwieriger.