Redis configureren voor standaard- en paginacache
Commerce biedt opdrachtregelopties voor het configureren van de pagina Redis en het in cache plaatsen van standaardgegevens. Hoewel u caching kunt vormen door het <Commerce-install-dir>app/etc/env.php dossier uit te geven, is de bevellijn de geadviseerde methode, vooral voor aanvankelijke configuraties. De bevellijn verstrekt bevestiging om ervoor te zorgen dat de configuratie syntactisch correct is.
Vereiste:
installeer Redis alvorens verder te gaan.
Ondersteunde frameworks
-
Geheime voorgeheugen van het Gebied (2.4.8 en vroeger) — De achtergrond van de Oudheid Redis voor Commerce 2.4.8 en vroeger:
- Verouderde Redis achtergrond - Gebruikt de volledige klassenweg (
Magento\Framework\Cache\Backend\Redis) - Preload sleutels — Steunt het vooraf laden van vaak gebruikte geheim voorgeheugensleutels
- manuscripten Lua — Lua voor huisvuilinzameling
- Compressie — Steunt gegevenscompressie
- Verouderde Redis achtergrond - Gebruikt de volledige klassenweg (
-
het Geheime voorgeheugen van de Symfony (2.4.9+) — Beginnend met Commerce 2.4.9, verstrekt het Geheime voorgeheugen van de Symfony een moderne, volgzame het in het voorgeheugen onderbrengende implementatie PSR-6 voor Redis met significante prestatiesverbeteringen:
- Automatisch opnieuw opent pijlt - de veelvoudige verrichtingen van batterijen in enige verzoeken, die latentie verminderen
- PSR-6 TagAwareAdapter — Efficiënte op markering-gebaseerde geheim voorgeheugenbevestiging met atomische verrichtingen
- Igbinary rangschikking - de Binaire rangschikking vermindert geheim voorgeheugeningangsgrootte met 45% en verbetert snelheid door 5-10%
- Verbeterde blijvende verbindingen — stabielere verbinding die met betere behandeling van verfprocessen samenvoegt
- Geoptimaliseerde manuscripten van Lua — Server-zijuitvoering die met het buizen leiden voor maximumefficiency wordt gecombineerd
Standaardcaching van Redis configureren
Voer de opdracht setup:config:set uit en geef parameters op die specifiek zijn voor de standaardcaching Redis.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter>=<value>...
Met de volgende parameters:
-
--cache-backend=redisschakelt de standaardopmaak van Redis in. Laat deze parameter weg als deze functie reeds is toegelaten. -
--cache-backend-redis-<parameter>=<value>is een lijst van sleutel-en-waardeparen die het gebrek in het voorgeheugen onderbrengen vormen:
cache-backend-redis-server127.0.0.1cache-backend-redis-port6379cache-backend-redis-dbBelangrijk: Als u Redis voor meer dan één type caching gebruikt, moeten de gegevensbestandaantallen verschillend zijn. U wordt aangeraden het standaard cachedatabasenummer aan 0, het databasenummer voor het in cache plaatsen van pagina’s aan 1 en het databasenummer voor de sessieopslag aan 2 toe te wijzen.
0cache-backend-redis-passwordauth , die vereist dat clients worden geverifieerd voor toegang tot de database. Het wachtwoord wordt direct geconfigureerd in het configuratiebestand van Redis: /etc/redis/redis.confcache-backend-redis-use-luaLua: Lua maakt het mogelijk om een deel van de toepassingslogica binnen Redis uit te voeren, waardoor de prestaties worden verbeterd en de consistentie van gegevens wordt gewaarborgd door middel van atomische uitvoering.
0cache-backend-redis-use-lua-on-gcLua: Lua maakt het mogelijk om een deel van de toepassingslogica binnen Redis uit te voeren, waardoor de prestaties worden verbeterd en de consistentie van gegevens wordt gewaarborgd door middel van atomische uitvoering.
1Voorbeeld, opdracht (standaardcache)
In het volgende voorbeeld wordt de standaardcaching Redis ingeschakeld, wordt de host ingesteld op 127.0.0.1 en wordt het databasenummer toegewezen aan 0. Redis gebruikt standaardwaarden voor alle andere parameters.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
Pagina’s opnieuw weergeven in cache plaatsen
Als u het in cache plaatsen van pagina’s opnieuw wilt configureren op Commerce, voert u de opdracht setup:config:set uit met extra parameters.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-<parameter>=<value>...
Met de volgende parameters:
-
--page-cache=redisschakelt het in cache plaatsen van pagina’s opnieuw uit. Laat deze parameter weg als deze functie reeds is toegelaten. -
--page-cache-redis-<parameter>=<value>is een lijst van sleutel-en-waardeparen die pagina in het voorgeheugen onderbrengen vormen:
page-cache-redis-server127.0.0.1page-cache-redis-port6379page-cache-redis-dbBelangrijk: Als u Redis voor meer dan één type caching gebruikt, moeten de gegevensbestandaantallen verschillend zijn. U wordt aangeraden het standaard cachedatabasenummer aan 0, het databasenummer voor het in cache plaatsen van pagina’s aan 1 en het databasenummer voor de sessieopslag aan 2 toe te wijzen.
0page-cache-redis-passwordauth , die vereist dat clients worden geverifieerd voor toegang tot de database. Configureer het wachtwoord in het Redis-configuratiebestand: /etc/redis/redis.confIn het volgende voorbeeld wordt het in cache plaatsen van pagina’s opnieuw verzonden ingeschakeld, wordt de host ingesteld op 127.0.0.1 en wordt het databasenummer toegewezen aan 1 . Alle andere parameters worden ingesteld op de standaardwaarde.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
Commerce-omgevingsconfiguratie controleren
Als u de opdrachten uitvoert om Redis caching te configureren, wordt de Commerce-omgevingsconfiguratie (<Commerce-install-dir>app/etc/env.php) bijgewerkt:
| code language-php |
|---|
|
| code language-php |
|---|
|
| note |
|---|
| NOTE |
Vanaf Commerce 2.4.9 gebruikt u het vereenvoudigde achtergrondtype 'backend' => 'redis' in plaats van het volledige klassenpad. Het Geheime voorgeheugen van de symfony wordt automatisch gebruikt wanneer de vereenvoudigde naam wordt gespecificeerd. |
Aanvullende opties voor caching configureren
Redis, functie voor vooraf laden
Aangezien Commerce configuratiegegevens opslaat in de cache van Redis, kunt u vooraf gegevens laden die opnieuw worden gebruikt tussen pagina’s. Als u toetsen wilt zoeken die vooraf moeten worden geladen, analyseert u de gegevens die van Redis naar Commerce worden overgedragen. Adobe stelt voor om gegevens die op elke pagina worden geladen, zoals SYSTEM_DEFAULT , EAV_ENTITY_TYPES en DB_IS_UP_TO_DATE , vooraf te laden.
Redis gebruikt pipeline om aanvragen voor samengestelde lading te verwerken. Toetsen moeten het databasevoorvoegsel bevatten; Als het databasevoorvoegsel bijvoorbeeld 061_ is, ziet de voorlaadtoets er als volgt uit: 061_SYSTEM_DEFAULT
| code language-php |
|---|
|
| code language-php |
|---|
|
Wanneer u de functie voor voorladen gebruikt met een L2-cache, moet u het achtervoegsel :hash aan de toetsen toevoegen. Het L2 geheime voorgeheugen brengt slechts de knoeiboel van de gegevens over, niet de daadwerkelijke gegevens.
'preload_keys' => [
'061_EAV_ENTITY_TYPES:hash',
'061_GLOBAL_PLUGIN_LIST:hash',
'061_DB_IS_UP_TO_DATE:hash',
'061_SYSTEM_DEFAULT:hash',
],
Parallelle generatie
Vanaf de Commerce 2.4.0-release heeft Adobe de optie allow_parallel_generation geïntroduceerd voor gebruikers die wachten op vergrendelingen niet meer hoeven te wachten. Deze functie is standaard uitgeschakeld en Adobe raadt u aan deze uit te schakelen totdat u te veel configuraties en/of blokken hebt.
om parallelle generatie toe te laten:
bin/magento setup:config:set --allow-parallel-generation
Aangezien het een vlag is, kunt u het met een bevel niet onbruikbaar maken. Stel handmatig de configuratiewaarde in op false :
| code language-php |
|---|
|
| code language-php |
|---|
|
Optimalisatie van Symfony Cache-prestaties
Als u Symfony Cache gebruikt, kunt u prestaties verder optimaliseren door de Igbinary serializer te vormen, de igbinary extensie PHP en phpredis te installeren, en blijvende verbindingen toe te laten.
Igbinary serializer
De Igbinary serializer verstrekt significante prestatiesverbeteringen over de standaardrangschikking van PHP. Deze moet handmatig worden geconfigureerd in app/etc/env.php :
'cache' => [
'frontend' => [
'default' => [
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'serializer' => 'igbinary', // Enable Igbinary serialization
]
],
'page_cache' => [
'backend_options' => [
'server' => 'redis',
'database' => '1',
'port' => '6379',
'serializer' => 'igbinary', // Enable Igbinary for page cache too
]
]
]
]
De extensie PHP Igbinary installeren
Om igbinary serialization te gebruiken, moet u de PHP Igbinary uitbreiding installeren.
Gebruikend apt (geadviseerd voor Debian/Ubuntu):
sudo apt-get install php-igbinary
sudo systemctl restart php-fpm
php -m | grep igbinary
Gebruikend pecl (alternatieve methode):
sudo pecl install igbinary
echo "extension=igbinary.so" | sudo tee /etc/php/8.3/mods-available/igbinary.ini
sudo phpenmod igbinary
sudo systemctl restart php-fpm
php -m | grep igbinary
PHP Redis-extensies: phpredis vs Predis
Commerce 2.4.9+ bevat automatische fallback tussen phpredis (native C-extensie) en Predis (pure PHP-bibliotheek). Installeer de volgende phpredis voor optimale prestaties:
Gebruikend apt (geadviseerd voor Debian/Ubuntu):
sudo apt-get install php-redis
sudo systemctl restart php-fpm
php -m | grep redis
Gebruikend pecl (alternatieve methode):
sudo pecl install redis
echo "extension=redis.so" | sudo tee /etc/php/8.3/mods-available/redis.ini
sudo phpenmod redis
sudo systemctl restart php-fpm
php -m | grep redis
vergelijking van Prestaties:
Blijvende verbindingen
Blijvende verbindingen maken opnieuw gebruik van bestaande Redis-verbindingen tussen aanvragen, waardoor cachebewerkingen van 5 tot 15% sneller verlopen. Configureren in app/etc/env.php :
'cache' => [
'frontend' => [
'default' => [
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'persistent' => '1',
'persistent_id' => 'cache_default',
'timeout' => '2.5',
'read_timeout' => '2.0',
]
],
'page_cache' => [
'backend_options' => [
'server' => 'redis',
'database' => '1',
'port' => '6379',
'persistent' => '1',
'persistent_id' => 'cache_fpc',
]
]
]
]
persistent_id om verbindingsconflicten te voorkomen.Volledige geoptimaliseerde configuratie
Hier is een productie-klaar configuratie van de Symfony die alle prestatiesoptimalisering combineert:
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => 'b0b_',
'backend' => 'redis',
'backend_options' => [
'server' => 'redis',
'database' => '0',
'port' => '6379',
'serializer' => 'igbinary',
'compress_data' => '1',
'compression_lib' => 'gzip',
'persistent' => '1',
'persistent_id' => 'cache_default',
'timeout' => '2.5',
'read_timeout' => '2.0',
'use_lua' => '1',
'use_lua_on_gc' => '1',
'preload_keys' => [
'b0b_EAV_ENTITY_TYPES',
'b0b_GLOBAL_PLUGIN_LIST',
'b0b_DB_IS_UP_TO_DATE',
'b0b_SYSTEM_DEFAULT',
],
]
],
'page_cache' => [
'id_prefix' => 'b0b_',
'backend' => 'redis',
'backend_options' => [
'server' => 'redis',
'database' => '1',
'port' => '6379',
'serializer' => 'igbinary',
'compress_data' => '0',
'persistent' => '1',
'persistent_id' => 'cache_fpc',
]
]
],
'allow_parallel_generation' => false
]
De Redis-verbinding controleren
Om te controleren of Redis en Commerce goed samenwerken:
- Meld u aan bij de server waarop Redis en Commerce wordt uitgevoerd.
- Open een terminal.
- Controleer de verbinding met de opdracht
redis-cli monitorofredis-cli ping.
Als de opdrachten slagen, wordt Redis uitgevoerd en kan het communiceren met de Commerce-toepassing. Als ze falen, is er een verbindingsprobleem tussen Redis en Commerce dat u moet oplossen.
Redis-monitor, opdracht
redis-cli monitor
Voorbeeld van uitvoer in cache plaatsen van pagina:
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"
...
Als beide opdrachten slagen, wordt Redis op de juiste wijze ingesteld.
Gecomprimeerde gegevens controleren
Om samengeperste zittingsgegevens en paginacache te inspecteren, gebruik het {🔗 hulpmiddel 0} RESP.app. Deze ondersteunt automatische decompressie van Commerce 2-sessies en cachegegevens van pagina’s en geeft PHP-sessiegegevens weer in een voor mensen leesbare vorm.