Redis ist schnell, aber häufige Datenabfragen belasten den API-Server. Besonders bei Echtzeitdaten, deren Aktualisierungen unregelmäßig sind, die aber oft abgefragt werden müssen, ist eine effiziente Caching-Strategie erforderlich.
-
Problem: Redis PubSub oder Keyspace Notifications können die Logik zur Erkennung von Aktualisierungen und zur Verarbeitung von Nachrichten komplex machen oder Ressourcen verschwenden.
-
Lösung: Invalidation Messages, unterstützt seit Redis 6.0, sind ein Verfahren, bei dem der Server den Client-Cache verwaltet.
- Wenn ein Client einen Schlüssel gelesen hat und ein anderer Client ihn ändert, sendet Redis eine Aktualisierungsnachricht, damit der Cache gelöscht wird.
-
Implementierung: In Go kann man Invalidation Messages mit der Kombination aus redigo+ristretto oder mit der Bibliothek rueidis einsetzen.
- redigo+ristretto erfordert Custom-Logik, während sich dies mit rueidis über die Funktion
DoCacheeinfach umsetzen lässt.
- redigo+ristretto erfordert Custom-Logik, während sich dies mit rueidis über die Funktion
-
Ergebnis: In der Praxis verbesserte sich die Antwortgeschwindigkeit der API um bis zu 82 %, und auch die Last auf dem Redis-Server sank. Die Verwaltung des clientseitigen Caches ist zwar notwendig, der Performance-Gewinn ist jedoch groß.
1 Kommentare
👀