Redis Integration

30 minutes MITTELSTUFE

Meistern Sie die integrierte Redis Unterstützung von GEMVC. Erfahren Sie, wie Sie RedisManager für Caching, Datenspeicherung, Pub/Sub Messaging und Performance Optimierung in Ihrer API Schicht verwenden.

What You'll Learn

Redis Setup

Redis während der Projekt Initialisierung installieren und konfigurieren

RedisManager API

Lernen Sie RedisManager Methoden und Operationen

API Schicht Caching

Redis auf API Ebene für beste Performance verwenden

Video Coming Soon...

Was ist die GEMVC Redis Integration?

GEMVC wird mit **integrierter Redis Unterstützung** durch die Klasse RedisManager geliefert. Redis ist ein leistungsstarker In Memory Datenstruktur Speicher, der für Caching, Sitzungsspeicherung, Pub/Sub Messaging und Performance Optimierung verwendet werden kann.

🎯 Best Practice:

**Verwenden Sie Redis auf API Ebene** (in den Klassen im Ordner /app/api/). Dies ist der empfohlene Ansatz zum Caching von API Antworten und zur Optimierung der Performance.

  • **Singleton Muster** - RedisManager verwendet das Singleton Muster für die Verbindungsverwaltung
  • **Auto Verbindung** - Stellt automatisch eine Verbindung her, wenn sie benötigt wird
  • **Konfiguration über .env** - Alle Einstellungen werden über Umgebungsvariablen konfiguriert
  • **Volle Redis API** - Unterstützt alle Redis Datenstrukturen und Operationen
  • **JsonResponse Caching** - Spezielle Methoden zum Caching von API Antworten
1

Installation & Setup

Während der Projekt Initialisierung

Wenn Sie gemvc init ausführen, werden Sie gefragt, ob Sie Redis Unterstützung installieren möchten. **Stellen Sie sicher, dass Sie "Ja" wählen, wenn Sie Redis verwenden möchten!**

⚠️ Wichtig:

Wenn Sie Redis in Ihrem GEMVC Projekt verwenden möchten, **vergessen Sie nicht, Redis während des gemvc init CLI Befehls auszuwählen!** Dadurch wird die notwendige Redis PHP Erweiterung installiert und Ihr Projekt konfiguriert.

Was installiert wird:

  • ✓ Redis PHP Erweiterung (phpredis)
  • ✓ Redis Konfiguration in der .env Datei
  • ✓ RedisManager Klasse ist einsatzbereit
2

Konfiguration

Umgebungsvariablen

Konfigurieren Sie die Redis Verbindungs Einstellungen in Ihrer .env Datei:

Konfigurations Optionen:

  • REDIS_HOST - Redis Server Host (Standard: 127.0.0.1)
  • REDIS_PORT - Redis Server Port (Standard: 6379)
  • REDIS_PASSWORD - Redis Passwort (optional)
  • REDIS_DATABASE - Redis Datenbank Nummer (Standard: 0)
  • REDIS_PREFIX - Schlüssel Präfix für alle Schlüssel (Standard: gemvc:)
  • REDIS_PERSISTENT - Persistente Verbindung verwenden (Standard: false)
  • REDIS_TIMEOUT - Verbindungs Timeout in Sekunden (Standard: 0.0)
  • REDIS_READ_TIMEOUT - Lese Timeout in Sekunden (Standard: 0.0)
3

Erste Schritte mit RedisManager

Grundlegende Nutzung

RedisManager verwendet das Singleton Muster. Rufen Sie eine Instanz ab und beginnen Sie mit der Verwendung von Redis:

Wichtige Punkte:

  • getInstance() gibt die Singleton Instanz zurück
  • ✓ Stellt automatisch eine Verbindung her, wenn Sie eine Methode aufrufen (kein manuelles connect() erforderlich)
  • ✓ Die Verbindung wird über Anfragen hinweg wiederverwendet (effizient!)
  • ✓ Alle Methoden geben sichere Standardwerte (null, false, leeres Array) zurück, wenn Redis nicht verfügbar ist
4

Verbindungsverwaltung

Manuelle Verbindungssteuerung

Obwohl RedisManager automatisch eine Verbindung herstellt, können Sie die Verbindung auch manuell steuern:

Verbindungsfunktionen:

  • ✓ **Persistente Verbindungen** - Konfigurieren Sie über REDIS_PERSISTENT
  • ✓ **Automatische Wiederverbindung** - Stellt automatisch eine Verbindung wieder her, wenn die Verbindung unterbrochen wird
  • ✓ **Fehlerbehandlung** - Verwenden Sie getError(), um nach Fehlern zu suchen
  • ✓ **Präfix Unterstützung** - Alle Schlüssel werden automatisch mit REDIS_PREFIX vorangestellt
5

Grundlegende Schlüssel Wert Operationen

Set, Get, Delete

Grundlegende Redis Operationen zum Speichern und Abrufen von Daten:

TTL (Time To Live):

Verwenden Sie TTL, um Schlüssel automatisch ablaufen zu lassen. Dies ist perfekt für Caching! Legen Sie eine TTL in Sekunden fest, und Redis löscht den Schlüssel automatisch, wenn er abläuft.

6

API Schicht Caching (Best Practice)

API Antworten Cachen

**Best Practice:** Verwenden Sie Redis auf API Ebene, um API Antworten zu cachen. Dies verbessert die Performance drastisch, indem Datenbankabfragen und die Ausführung der Geschäftslogik vermieden werden.

🎯 Empfohlener Ansatz:

Verwenden Sie immer Redis Caching in den Klassen im Ordner /app/api/. Dies ist die Best Practice für die Performance Optimierung.

Hauptvorteile:

  • ✓ **Schnellere Antworten** - Gecachte Antworten werden sofort zurückgegeben
  • ✓ **Reduzierte Datenbanklast** - Weniger Abfragen an die Datenbank
  • ✓ **Bessere Performance** - Insbesondere für häufig aufgerufene Daten
  • ✓ **Automatischer Ablauf** - Cache läuft automatisch mit TTL ab
  • ✓ **Einfache Ungültigkeitserklärung** - Cache Schlüssel löschen, wenn sich Daten ändern
7

Hash Operationen

Speichern von Objekten als Hashes

Redis Hashes sind perfekt zum Speichern von Objekten mit mehreren Feldern:

8

List Operationen

Warteschlangen und Listen

Redis Listen sind perfekt für Warteschlangen, Protokolle und geordnete Daten:

9

Set Operationen

Eindeutige Sammlungen

Redis Sets speichern eindeutige Werte – perfekt für Tags, Kategorien und eindeutige Sammlungen:

10

Sorted Sets

Geordnete Sammlungen mit Scores

Sorted Sets behalten die Reihenfolge nach Score bei – perfekt für Ranglisten, Rankings und Zeitreihen Daten:

3020 11

Pub/Sub Messaging

Publish/Subscribe Muster

Redis Pub/Sub ermöglicht Echtzeit Messaging zwischen verschiedenen Teilen Ihrer Anwendung:

Anwendungsfälle:

  • • **Cache Ungültigkeitserklärung** - Alle Instanzen benachrichtigen, um den Cache zu leeren
  • • **Echtzeit Updates** - Updates an verbundene Clients pushen
  • • **Event Broadcasting** - Events über Dienste hinweg senden
  • • **Hintergrund Jobs** - Hintergrundverarbeitung auslösen
12

Pipeline & Transaktionen

Batch Operationen

Verwenden Sie Pipelines für Batch Operationen (schneller) oder Transaktionen für atomare Operationen:

Pipeline vs. Transaktion:

  • • **Pipeline** - Schneller, keine Atomizitätsgarantie, für Batch Operationen verwenden
  • • **Transaktion** - Langsamer, atomar (alles oder nichts), verwenden, wenn Konsistenz kritisch ist

Best Practices

🎯 Verwenden Sie Redis auf API Ebene

Verwenden Sie immer Redis Caching in den Klassen im Ordner /app/api/. Dies ist die empfohlene Best Practice für die Performance Optimierung.

💡 Cache Schlüssel Strategie

Verwenden Sie beschreibende, konsistente Cache Schlüssel:

💡 Angemessene TTL festlegen

Legen Sie immer TTL (Time To Live) für Cache Schlüssel fest. Dies verhindert veraltete Daten und bereinigt alte Cache Einträge automatisch.

💡 Cache bei Updates ungültig machen

Wenn sich Daten ändern (erstellen, aktualisieren, löschen), erklären Sie verwandte Cache Schlüssel für ungültig, um die Bereitstellung veralteter Daten zu verhindern.

💡 Cache Misses elegant handhaben

Behandeln Sie Cache Misses immer, indem Sie auf Datenbankabfragen zurückgreifen. Redis sollte die Performance verbessern, nicht die Funktionalität beeinträchtigen.

Wichtige Hinweise

  • **Installation:** Vergessen Sie nicht, Redis während des gemvc init CLI Befehls auszuwählen! Dadurch wird die Redis PHP Erweiterung installiert und Ihr Projekt konfiguriert.
  • **API Ebene:** Best Practice ist die Verwendung von Redis auf API Ebene (/app/api/ Ordner). Dies bietet die beste Performance Optimierung.
  • **Auto Verbindung:** RedisManager stellt automatisch eine Verbindung her, wenn Sie eine Methode aufrufen. Sie müssen connect() nicht manuell aufrufen.
  • 3311 **Sichere Standardwerte:** Alle Methoden geben sichere Standardwerte (null, false, leeres Array) zurück, wenn Redis nicht verfügbar ist, damit Ihre Anwendung nicht abstürzt.
  • **Schlüssel Präfix:** Alle Schlüssel werden automatisch mit REDIS_PREFIX vorangestellt (Standard: gemvc:), um Konflikte zu vermeiden.

⚡ Redis Integration abgeschlossen!

Ausgezeichnet! Sie haben gelernt, wie Sie die integrierte Redis Unterstützung von GEMVC verwenden. Denken Sie daran: Verwenden Sie Redis auf API Ebene für beste Performance, und vergessen Sie nicht, Redis während gemvc init auszuwählen!