Seiten-Caching macht anonyme Besuche schnell. Aber viele Anfragen können nicht aus dem Seiten-Cache bedient werden: angemeldete Benutzer, Warenkorb, Checkout, Admin und Suche. Für diese erledigen PHP und die Datenbank die Arbeit bei jeder Anfrage.
Redis ist ein In-Memory-Datenspeicher, der genau diese Anfragen beschleunigt, indem er Datenbankergebnisse zwischenspeichert und Sitzungen im Speicher speichert. Dieser Leitfaden zeigt, wie man es für WordPress/WooCommerce und Magento 2 einrichtet.
Was Redis in einem Webshop macht
| Verwenden | Was es speichert | Vorteil |
|---|---|---|
| Objekt-Cache (WordPress) | Ergebnisse von Datenbankabfragen und berechneten Daten | Weniger Datenbankabfragen pro Anfrage |
| Standard-Cache (Magento) | Konfiguration, Layout, Blöcke, Sammlungen | Schnellere Seitengenerierung |
| Seiten-Cache (Magento, wenn kein Varnish) | Vollständige Seiten | Schnellere anonyme Seiten |
| Sitzungen | Benutzersitzungen | Schneller, funktioniert über mehrere Webserver hinweg |
Installieren Sie Redis
Auf Ubuntu/Debian:
sudo apt install redis-server
sudo systemctl enable --now redis-server
redis-cli ping
Sie sollten PONG sehen. Installieren Sie auch die PHP-Erweiterung (zum Beispiel php8.3-redis) und starten Sie PHP-FPM neu.
Grundlegende Redis-Konfiguration
In /etc/redis/redis.conf:
bind 127.0.0.1 ::1
protected-mode yes
maxmemory 512mb
maxmemory-policy allkeys-lru
- bind an localhost (oder ein privates Netzwerk). Exponiere Redis niemals im Internet
- maxmemory begrenzt die Speichernutzung; passen Sie die Größe an Ihre Daten an
- allkeys-lru entfernt die am wenigsten kürzlich verwendeten Schlüssel, wenn der Speicher voll ist, was für einen Cache geeignet ist.
Für Sitzungen bedeutet Räumung, dass Benutzer abgemeldet werden oder ihren Warenkorb verlieren. Verwenden Sie eine separate Redis-Instanz (oder zumindest eine separate Speicherplanung) für Sitzungen mit einer Richtlinie, die aktive Sitzungen nicht unerwartet räumt, wie z.B. noeviction mit ausreichend Speicher oder volatile-lru, wenn Sitzungen Ablaufzeiten haben.
WordPress und WooCommerce
1. Installieren Sie ein Objekt-Cache-Plugin
Das beliebte Redis Object Cache Plugin fügt ein Drop-in (wp-content/object-cache.php) hinzu, das die WordPress-Cache-Aufrufe an Redis sendet. Einige Hosts bieten ihre eigene Integration an.
2. Konfigurieren Sie wp-config.php
define( 'WP_REDIS_HOST', '127.0.0.1' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_DATABASE', 0 );
define( 'WP_REDIS_PREFIX', 'shop_' );
Verwenden Sie ein einzigartiges Präfix pro Site, wenn mehrere Sites einen Redis-Server teilen.
3. Aktivieren Sie es
In den Plugin-Einstellungen oder mit WP-CLI:
wp redis enable
wp redis status
4. Überprüfen Sie die Wirkung
Verwenden Sie das Query Monitor-Plugin, um Datenbankabfragen pro Anfrage vor und nach dem Vergleich zu analysieren. Warenkorb-, Checkout-, Konto- und Administrationsseiten sollten die größte Verbesserung zeigen.
Magento 2
Magento unterstützt Redis für den Standard-Cache, den Seiten-Cache und Sitzungen, konfiguriert mit bin/magento setup:config:set.
Standardcache
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-port=6379 --cache-backend-redis-db=0
Seiten-Cache (nur wenn Sie Varnish nicht verwenden)
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-port=6379 --page-cache-redis-db=1
In der Produktion ist Varnish der empfohlene Full-Page-Cache (siehe den Varnish für Magento 2 Leitfaden).
Sitzungen
bin/magento setup:config:set --session-save=redis --session-save-redis-host=127.0.0.1 --session-save-redis-port=6380 --session-save-redis-db=0
Das Beispiel verwendet eine zweite Redis-Instanz auf Port 6380 für Sitzungen. Auf diese Weise wird das Leeren des Caches niemals dazu führen, dass Kunden abgemeldet werden.
Nach der Änderung der Konfiguration:
bin/magento cache:flush
Weitere Befehle in der Magento 2 Befehlsübersicht.
Sicherheit
- Binden Sie nur an localhost oder ein privates Netzwerk und firewallen Sie den Port 6379.
- Setzen Sie ein Passwort (
requirepass) oder ACL-Benutzer, wenn Redis von anderen Maschinen aus erreichbar ist. - Halten Sie Redis aktuell
- Führen Sie Redis nicht als Root aus
Überwachung und Fehlersuche
redis-cli info memory
redis-cli info stats | grep -E "keyspace_hits|keyspace_misses|evicted_keys"
redis-cli --latency
- Hohe Kündigungen auf der Cache-Instanz: erhöhen Sie
maxmemory - Räumungen auf der Sitzungsinstanz: Kunden verlieren Warenkörbe. Erhöhen Sie den Speicher oder beheben Sie die Richtlinie.
- Niedrige Trefferquote: Cache zu oft geleert oder Schlüssel nicht wiederverwendet
- Verbindungsfehler: Überprüfen Sie, ob die Redis-Erweiterung von PHP für die richtige PHP-Version installiert ist.
- Veraltete Daten nach dem Deployment: Leeren Sie den Cache (nicht den Sitzungsstore) als Teil des Deployments
Häufig gestellte Fragen
Ersetzt Redis das Seiten-Caching?
Nein. Die Seiten-Caching (Varnish, CDN, Plugin) liefert vollständige Seiten an anonyme Besucher. Redis beschleunigt die Seiten, die nicht im Seiten-Cache gespeichert werden können. Verwenden Sie beides.
Redis oder Memcached?
Beide funktionieren als Objekt-Caches. Redis bietet Persistenzoptionen und mehr Datentypen und ist die gängige Wahl für Magento und viele WordPress-Hosts.
Wie viel Speicher benötigt Redis?
Es hängt von der Kataloggröße und dem Traffic ab. Beginnen Sie mit ein paar hundert Megabyte für einen mittelgroßen Shop, überwachen Sie den Speicher und die Auslagerungen und passen Sie an.
Möchten Sie den Cache Ihres Shops richtig einrichten?
Ich konfiguriere Redis, Varnish und Seiten-Caching für WordPress-, WooCommerce- und Magento-Shops. Sehen Sie sich meinen Server- und Backup-Service an oder fordern Sie eine Leistungsüberprüfung an.