In der heutigen E-Commerce-Welt ist Geschwindigkeit alles. Ein langsamer Online-Shop führt zu frustrierten Kunden und verpassten Umsätzen. Glücklicherweise bietet Shopware 6 moderne Technologien zur Leistungssteigerung. Eine der effektivsten Methoden ist die Integration von Redis, einem leistungsstarken In-Memory-Datenspeicher.
Als Ihre Digitalagentur WLTR zeigen wir Ihnen in diesem Beitrag, wie Sie Redis für Ihren Shopware 6 Shop installieren und optimal konfigurieren, um Caching, Sessions und mehr erheblich zu beschleunigen.
Warum Redis mit Shopware 6 nutzen? Die Vorteile auf einen Blick
Bevor wir in die Details gehen, lassen Sie uns kurz die Hauptvorteile beleuchten:
- Deutliche Performance-Steigerung: Redis speichert Daten im Arbeitsspeicher (RAM), was Lese- und Schreibzugriffe extrem schnell macht – viel schneller als bei dateibasiertem oder Datenbank-Caching.
- Effizientes Caching: Lagern Sie den Anwendungs-Cache (z. B. für Konfigurationen, Doctrine-Metadaten, Twig-Templates) und den HTTP-Seiten-Cache nach Redis aus.
- Skalierbare Session-Verwaltung: Besonders wichtig bei Setups mit mehreren Servern (Load Balancing). Redis bietet eine schnelle und zuverlässige Methode zur Verwaltung von Benutzersitzungen.
- Optimierte Hintergrundaufgaben (Message Queue): Redis kann als performanter Transport für Symfony Messenger dienen, um asynchrone Aufgaben effizient abzuarbeiten.
- Bessere Skalierbarkeit: Entlastet Ihr Dateisystem und Ihre Datenbank, was die Skalierbarkeit Ihres Shops verbessert.
Voraussetzungen
Bevor Sie starten, stellen Sie sicher, dass die folgenden Punkte erfüllt sind:
- Laufender Redis-Server: Sie benötigen eine Redis-Instanz. Diese kann lokal installiert sein (z. B. via
sudo apt install redis-server
unter Debian/Ubuntu oderbrew install redis
unter macOS), über Docker laufen oder ein gemanagter Cloud-Service sein. Der Server muss vom Shopware-Server aus erreichbar sein (Standardport:6379
). - PHP Redis Extension: Die PHP-Erweiterung
php-redis
muss auf Ihrem Server installiert und für die von Shopware genutzte PHP-Version aktiviert sein. Die Installation erfolgt meist überpecl install redis
oder Paketmanager (z. B.sudo apt install phpX.Y-redis
). Aktivieren Sie sie in derphp.ini
(extension=redis.so
) und starten Sie PHP-FPM oder Ihren Webserver neu.
Redis-Installation (Kurzer Überblick)
Die Installation von Redis selbst variiert je nach System. Hier gängige Befehle:
- Debian/Ubuntu:
sudo apt update && sudo apt install redis-server
- macOS (mit Homebrew):
brew install redis
- Docker: Verwenden Sie ein offizielles Redis-Image.
Stellen Sie sicher, dass der Redis-Dienst gestartet ist (sudo systemctl start redis-server
/ sudo systemctl enable redis-server
oder via brew services start redis
).
Konfiguration von Redis in Shopware 6 (Die empfohlene Methode)
Die beste Methode zur Konfiguration von Redis in Shopware 6 ist die Verwendung von Umgebungsvariablen in der Datei .env.local
im Hauptverzeichnis Ihres Shops. Dies hält sensible Daten aus der Codebasis fern und erleichtert die Verwaltung unterschiedlicher Umgebungen (Entwicklung, Staging, Produktion).
WICHTIG: Verwenden Sie für jeden Zweck unterschiedliche Redis-Datenbanknummern (z. B. /0
, /1
, /2
…), um Schlüsselkonflikte zu vermeiden!
Erstellen oder bearbeiten Sie die Datei .env.local
und fügen Sie die folgenden Variablen hinzu (passen Sie Host 127.0.0.1
, Port 6379
und die Datenbanknummern bei Bedarf an):
# .env.local - Beispielkonfiguration für Redis in Shopware 6
# --- Allgemeiner Anwendungs-Cache ---
# Haupt-Cache-Adapter auf Redis setzen (Doctrine, Config, etc.)
SHOPWARE_CACHE_ADAPTER=redis
# Verbindungs-DSN für den Haupt-Cache (Redis DB 0)
SHOPWARE_CACHE_REDIS_URL="redis://127.0.0.1:6379/0"
# --- HTTP Cache (Optional, für Produktion empfohlen) ---
# Shopware HTTP Cache aktivieren
SHOPWARE_HTTP_CACHE_ENABLED=1
# Standard-Gültigkeitsdauer für HTTP-Cache-Einträge (z. B. 7200s = 2 Stunden)
SHOPWARE_HTTP_DEFAULT_TTL=7200
# Optional: Explizite Redis-Konfiguration für den HTTP Cache Store.
# Falls auskommentiert, wird oft SHOPWARE_CACHE_REDIS_URL (DB 0 hier) geerbt.
# Für strikte Trennung oder andere Redis-Instanz eigene DB verwenden (z.B. /6).
# SHOPWARE_HTTP_CACHE_STORE_REDIS_URL="redis://127.0.0.1:6379/6"
# --- Session Handling ---
# Redis für die Speicherung von Benutzersitzungen verwenden
SHOPWARE_SESSION_ADAPTER=redis
# Verbindungs-DSN für Sessions (Redis DB 1)
SHOPWARE_SESSION_REDIS_URL="redis://127.0.0.1:6379/1"
# --- Doctrine Caching (Optional, für Performance empfohlen) ---
# DSN für Doctrine Metadaten-Cache (Redis DB 2)
SHOPWARE_DOCTRINE_METADATA_CACHE_URL="redis://127.0.0.1:6379/2"
# DSN für Doctrine Query-Cache (Redis DB 3)
SHOPWARE_DOCTRINE_QUERY_CACHE_URL="redis://127.0.0.1:6379/3"
# DSN für Doctrine Result-Cache (Redis DB 4) - Aktivieren bei Bedarf. Vorsicht bei Caching von Ergebnissen!
# SHOPWARE_DOCTRINE_RESULT_CACHE_URL="redis://127.0.0.1:6379/4"
# --- Symfony Messenger (Optional - Für Hintergrundaufgaben/Warteschlangen) ---
# Redis als Transport für die 'async'-Warteschlange definieren (Redis DB 5)
# Ersetzen Sie 'async', falls Ihr Haupt-Transport anders heißt.
# Für Produktion: '?auto_setup=0' hinzufügen, NACHDEM Stream & Gruppe manuell erstellt wurden!
# Beispiel: MESSENGER_TRANSPORT_DSN_async="redis://127.0.0.1:6379/5?auto_setup=0"
# Für Entwicklung: '?auto_setup=1' (oder weglassen) erlaubt Symfony das automatische Erstellen.
MESSENGER_TRANSPORT_DSN_async="redis://127.0.0.1:6379/5"
# Falls weitere Transports benötigt werden (z.B. low_priority), definieren Sie sie analog (z.B. DB 7):
# MESSENGER_TRANSPORT_DSN_low_priority="redis://127.0.0.1:6379/7"
# --- Shopware-spezifische Features (Increments, Rate Limiting) ---
# Diese werden oft in config/packages/shopware.yaml konfiguriert.
# Stellen Sie sicher, dass der 'url:' Parameter dort auf Ihre Redis-Instanz zeigt
# und idealerweise ebenfalls eine dedizierte DB verwendet (z.B. /8).
# shopware:
# increment:
# user_activity:
# type: 'redis'
# config:
# url: 'redis://127.0.0.1:6379/8' # Eigene DB nutzen!
Schritte nach der Konfiguration
- Cache leeren: Führen Sie nach jeder Änderung an
.env.local
oder YAML-Konfigurationsdateien immer den folgenden Befehl im Shopware-Hauptverzeichnis aus:php bin/console cache:clear
- Queue Worker neu starten (falls Messenger genutzt wird): Wenn Sie
MESSENGER_TRANSPORT_DSN
konfiguriert haben, stoppen und starten Sie Ihremessenger:consume
-Worker neu (z. B. via Supervisor, systemd oder manuell), damit sie die neue Konfiguration laden. - Überprüfung:
- Prüfen Sie die Shopware-Logdateien unter
var/log/
auf Verbindungsfehler. - Verwenden Sie
redis-cli monitor
auf Ihrem Redis-Server, um eingehende Befehle von Shopware zu beobachten (Schlüssel haben oft das Präfixsf_
). - Testen Sie das Laden des Frontends, Login/Logout von Kunden und ggf. die Ausführung von Hintergrundaufgaben.
- Prüfen Sie die Shopware-Logdateien unter
Fazit
Die korrekte Integration von Redis in Shopware 6 ist ein mächtiger Hebel zur Optimierung der Ladezeiten und der allgemeinen Performance Ihres Online-Shops. Durch die Auslagerung von Caching, Sessions und optional der Message Queue auf den schnellen In-Memory-Speicher entlasten Sie Ihr System und sorgen für ein besseres Einkaufserlebnis Ihrer Kunden.
Benötigen Sie Unterstützung bei der Implementierung oder weiteren Optimierung Ihres Shopware 6 Shops? Kontaktieren Sie uns bei WLTR – Die Digitalagentur! Wir helfen Ihnen gerne, das volle Potenzial Ihres Online-Geschäfts auszuschöpfen.