[On-Premises]{class="badge informative" title="Gilt nur für Adobe Commerce On-Premise-Projekte."}
Konfigurieren von Redis für Standard- und Seiten-Cache
Commerce bietet Befehlszeilenoptionen zum Konfigurieren der Redis-Seite und des Standard-Caching. Obwohl Sie die Zwischenspeicherung durch Bearbeiten der <Commerce-install-dir>app/etc/env.php konfigurieren können, ist die Verwendung der Befehlszeile die empfohlene Methode, insbesondere für anfängliche Konfigurationen. Die Befehlszeile stellt eine Validierung bereit, um sicherzustellen, dass die Konfiguration syntaktisch korrekt ist.
Voraussetzung:
Installieren Sie Redis bevor Sie fortfahren.
Redis-Cache-Implementierungen
Adobe Commerce hat die folgenden Redis-Cache-Backend-Implementierungen verwendet:
- Legacy Redis Backend (
Cm_Cache_Backend_Redis) - Veraltete Implementierung in älteren Redis-Konfigurationen. - Redis Backend (
Magento\Framework\Cache\Backend\Redis) - Backend, das von der Befehlszeilenkonfiguration in diesem Thema für den Standard- und Seiten-Cache verwendet wird. - L2 Cache Backend (
Magento\Framework\Cache\Backend\RemoteSynchronizedCache) - Zwei-Ebenen-Cache-Implementierung, die Redis als Remote-Backend und lokalen Datei-Cache-Speicher verwendet, um Cache-Daten über Knoten hinweg zu synchronisieren. Siehe Zwei-Ebenen-Cache-Konfiguration.
Konfigurieren des Redis-Standardcachings
Führen Sie den setup:config:set Befehl aus und geben Sie Parameter an, die spezifisch für das Redis-Standardcaching sind.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter>=<value>...
Zu den gebräuchlichen Parametern gehören:
-
--cache-backend=redisaktiviert das Redis-Standard-Caching. Wenn diese Funktion bereits aktiviert ist, lassen Sie diesen Parameter weg. -
--cache-backend-redis-<parameter>=<value>ist eine Liste von Schlüssel-Wert-Paaren, die das standardmäßige Caching konfigurieren:
cache-backend-redis-server127.0.0.1cache-backend-redis-port6379cache-backend-redis-dbWichtig: Wenn Sie Redis für mehr als einen Caching-Typ verwenden, müssen die Datenbanknummern unterschiedlich sein. Es wird empfohlen, die standardmäßige Caching-Datenbanknummer 0, die Seitencaching-Datenbanknummer 1 und die Sitzungsspeicher-Datenbanknummer 2 zuzuweisen.
0cache-backend-redis-passwordauth-Befehl, für den sich Clients authentifizieren müssen, um auf die Datenbank zuzugreifen. Das Passwort wird direkt in der Redis-Konfigurationsdatei konfiguriert: /etc/redis/redis.confcache-backend-redis-compress-data0 setzen, um die Komprimierung zu deaktivieren.1cache-backend-redis-compression-libsnappy, lzf, l4z, zstd und gzip. Leer lassen, um automatisch zu bestimmen.cache-backend-redis-use-luaStandard: unter
0 halten. Der Lua-Modus ist standardmäßig deaktiviert, um bekannte Leistungs-Regressionen und GraphQL-Cache-Fehler zu verhindern, die durch die gebündelte Redis-Bibliothek (1.17.x) eingeführt wurden, wenn Lua aktiviert wurde.0cache-backend-redis-use-lua-on-gcbackend_clean_cache Cron-Auftrag).Standard: unter
1 halten. Absichtlich aktiviert, um die atomare Tag-Set-Bereinigung während des GC sicherzustellen. Ohne sie kann eine Race-Bedingung auftreten, wenn der backend_clean_cache Cron gleichzeitig mit einem Cache-Speichervorgang ausgeführt wird, sodass Cache-Einträge ohne entsprechenden Eintrag im Cache-Tag-Index verbleiben. Dies führt dazu, dass die Tag-basierte Invalidierung im Hintergrund fehlschlägt. So kann z. B. die Aktualisierung eines Produktpreises den Produkt-Cache nicht invalidieren, sondern erfordert eine vollständige Cache-Leerung.1LUA-Modus
Wenn dieser Modus aktiviert ist, bündelt er mehrere Redis-Vorgänge (Cache-Schreibvorgänge, Tag-Updates, Garbage Collection) in einem einzigen atomaren Skript, das Server-seitig über EVALSHA ausgeführt wird. Dadurch wird verhindert, dass gleichzeitige Anfragen verschachtelt werden, z. B. indem sichergestellt wird, dass ein Cache-Eintrag und seine Tag-Zugehörigkeit zusammen geschrieben werden.
use_lua und use_lua_on_gc nicht, ohne die Auswirkungen für Ihre Adobe Commerce-Version zu verstehen:use_lua: Die Aktivierung dieser Funktion auf Adobe Commerce 2.4.7 oder 2.4.8 (Bibliothekcolinmollenhour/cache-backend-redis1.17.1) kann zu Cache-Beschädigungen und Problemen mit GraphQL-Cache-Fehlern führen.use_lua_on_gc: Wenn Sie dies auf Adobe Commerce 2.4.8 deaktivieren, wird der atomare Schutz während der automatischen Bereinigung entfernt. Dies kann dazu führen, dass die Tag-basierte Cache-Invalidierung im Hintergrund fehlschlägt, was eine vollständige Cache-Leerung erforderlich macht, um dies wiederherzustellen.
Beispielbefehl (Standard-Cache)
Das folgende Beispiel aktiviert die Redis-Standardzwischenspeicherung, legt den Host auf 127.0.0.1 fest und weist die Datenbanknummer auf 0 zu. Redis verwendet Standardwerte für alle anderen Parameter.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
Konfigurieren des Redis-Seitencachings
Um das Caching der Redis-Seite in Commerce zu konfigurieren, führen Sie den Befehl setup:config:set mit zusätzlichen Parametern aus.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-<parameter>=<value>...
Zu den gebräuchlichen Parametern gehören:
-
--page-cache=redisaktiviert das Caching von Redis-Seiten. Wenn diese Funktion bereits aktiviert ist, lassen Sie diesen Parameter weg. -
--page-cache-redis-<parameter>=<value>ist eine Liste von Schlüssel-Wert-Paaren, die das Caching von Seiten konfigurieren:
page-cache-redis-server127.0.0.1page-cache-redis-port6379page-cache-redis-dbWichtig: Wenn Sie Redis für mehr als einen Caching-Typ verwenden, müssen die Datenbanknummern unterschiedlich sein. Es wird empfohlen, die standardmäßige Caching-Datenbanknummer 0, die Seitencaching-Datenbanknummer 1 und die Sitzungsspeicher-Datenbanknummer 2 zuzuweisen.
0page-cache-redis-passwordauth-Befehl, für den sich Clients authentifizieren müssen, um auf die Datenbank zuzugreifen. Konfigurieren Sie das Kennwort in der Redis-Konfigurationsdatei: /etc/redis/redis.confpage-cache-redis-compress-data1 fest, um den Vollseiten-Cache zu komprimieren. Verwenden Sie 0, um die Komprimierung zu deaktivieren.0page-cache-redis-compression-libsnappy, lzf, l4z, zstd und gzip. Leer lassen, um automatisch zu bestimmen.Das folgende Beispiel aktiviert die Zwischenspeicherung der Redis-Seite, legt den Host auf 127.0.0.1 fest und weist 1 die Datenbanknummer zu. Alle anderen Parameter sind auf den Standardwert eingestellt.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
Überprüfen der Commerce-Umgebungskonfiguration
Wenn Sie die Befehle zum Konfigurieren des Redis-Caching ausführen, wird die Commerce-Umgebungskonfiguration (<Commerce-install-dir>app/etc/env.php) aktualisiert:
'cache' => [
'frontend' => [
'default' => [
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => '127.0.0.1',
'database' => '0',
'port' => '6379'
],
],
'page_cache' => [
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => '127.0.0.1',
'port' => '6379',
'database' => '1',
'compress_data' => '0'
]
]
]
],
Konfigurieren zusätzlicher Caching-Optionen
Vorabladefunktion neu einstellen
Da Commerce Konfigurationsdaten im Redis-Cache speichert, können Sie Daten vorab laden, die zwischen Seiten wiederverwendet werden. Um Schlüssel zu finden, die vorgeladen werden müssen, analysieren Sie Daten, die von Redis an Commerce übertragen werden. Adobe empfiehlt, Daten vorab zu laden, die auf jeder Seite geladen werden, z. B. SYSTEM_DEFAULT, EAV_ENTITY_TYPES und DB_IS_UP_TO_DATE.
Redis verwendet die pipeline zum Zusammensetzen von Ladeanfragen. Schlüssel sollten das Datenbankpräfix enthalten. Wenn das Datenbankpräfix beispielsweise 061_ ist, sieht der Vorabladeschlüssel wie folgt aus: 061_SYSTEM_DEFAULT
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => '061_',
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
'compression_lib' => '',
'preload_keys' => [
'061_EAV_ENTITY_TYPES',
'061_GLOBAL_PLUGIN_LIST',
'061_DB_IS_UP_TO_DATE',
'061_SYSTEM_DEFAULT',
],
]
],
'page_cache' => [
'id_prefix' => '061_'
]
]
]
Bei Verwendung der Vorabladefunktion mit einem L2-Cache müssen Sie den Schlüsseln das :hash Suffix hinzufügen. Der L2-Cache überträgt nur den Hash der Daten, nicht die tatsächlichen Daten.
'preload_keys' => [
'061_EAV_ENTITY_TYPES:hash',
'061_GLOBAL_PLUGIN_LIST:hash',
'061_DB_IS_UP_TO_DATE:hash',
'061_SYSTEM_DEFAULT:hash',
],
Parallelerzeugung
Mit der Commerce-Version 2.4.0 führte Adobe die allow_parallel_generation-Option für Benutzende ein, die das Warten auf Sperren verhindern möchten. Sie ist standardmäßig deaktiviert, und Adobe empfiehlt, sie zu deaktivieren, bis Sie übermäßige Konfigurationen und/oder Blockierungen haben.
So aktivieren Sie die parallele Generierung:
bin/magento setup:config:set --allow-parallel-generation
Da es sich um ein Flag handelt, können Sie es nicht mit einem Befehl deaktivieren. Legen Sie den Konfigurationswert manuell auf false fest:
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => 'b0b_',
'backend' => 'Magento\\Framework\\Cache\\Backend\\Redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'password' => '',
'compress_data' => '1',
'compression_lib' => ''
]
],
'page_cache' => [
'id_prefix' => 'b0b_'
]
],
'allow_parallel_generation' => false
],
PHP Redis-Erweiterung
Verwenden Sie die native PHP Redis-Erweiterung (phpredis), wenn Ihre Umgebung dies unterstützt:
Verwenden von apt
Verwenden Sie für Debian oder Ubuntu apt:
sudo apt-get install php-redis
sudo systemctl restart php-fpm
php -m | grep redis
PECL verwenden
Verwenden Sie alternativ pecl:
sudo pecl install redis
echo "extension=redis.so" | sudo tee /etc/php/<version>/mods-available/redis.ini
sudo phpenmod redis
sudo systemctl restart php-fpm
php -m | grep redis
Überprüfen der Redis-Verbindung
So überprüfen Sie, ob Redis und Commerce ordnungsgemäß zusammenarbeiten:
- Melden Sie sich bei dem Server an, auf dem Redis und Commerce ausgeführt werden.
- Öffnen Sie ein Terminal.
- Überprüfen Sie die Verbindung entweder mithilfe des Befehls
redis-cli monitoroder des Befehlsredis-cli ping.
Wenn die Befehle erfolgreich sind, wird Redis ausgeführt und kann mit der Commerce-Anwendung kommunizieren. Wenn sie fehlschlagen, gibt es ein Verbindungsproblem zwischen Redis und Commerce, das Sie beheben müssen.
Redis-Monitorbefehl
redis-cli monitor
Beispielhafte Seitenzwischenspeicherungsausgabe:
1476826133.810090 [0 127.0.0.1:52366] "select" "1"
1476826133.816293 [0 127.0.0.1:52367] "select" "0"
1476826133.817461 [0 127.0.0.1:52367] "hget" "zc:k:ea6_GLOBAL__DICONFIG" "d"
1476826133.829666 [0 127.0.0.1:52367] "hget" "zc:k:ea6_DICONFIG049005964B465901F774DB9751971818" "d"
1476826133.837854 [0 127.0.0.1:52367] "hget" "zc:k:ea6_INTERCEPTION" "d"
1476826133.868374 [0 127.0.0.1:52368] "select" "1"
1476826133.869011 [0 127.0.0.1:52369] "select" "0"
1476826133.869601 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DEFAULT_CONFIG_CACHE_DEFAULT__10__235__32__1080MAGENTO2" "d"
1476826133.872317 [0 127.0.0.1:52369] "hget" "zc:k:ea6_INITIAL_CONFIG" "d"
1476826133.879267 [0 127.0.0.1:52369] "hget" "zc:k:ea6_GLOBAL_PRIMARY_PLUGIN_LIST" "d"
...
Wenn beide Befehle erfolgreich sind, wird Redis ordnungsgemäß eingerichtet.
Überprüfen komprimierter Daten
Verwenden Sie das Tool RESP.app, um komprimierte Sitzungsdaten und Seiten-Cache zu überprüfen. Es unterstützt die automatische Dekomprimierung von Commerce 2-Sitzungs- und Seiten-Cache-Daten und zeigt PHP-Sitzungsdaten in menschenlesbarer Form an.