Redis-Objekt-Cache für WordPress und Magento 2: Einrichtung und Best Practices

Redis kann WordPress, WooCommerce und Magento deutlich schneller machen, insbesondere für Seiten, die nicht im Cache gespeichert werden können. Hier erfahren Sie, wie Sie es richtig einrichten und häufige Fehler vermeiden.

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.