Konfigurera Redis för standard- och sidcache
Commerce tillhandahåller kommandoradsalternativ för att konfigurera Redis-sidan och standardcachning. Även om du kan konfigurera cachelagring genom att redigera filen <Commerce-install-dir>app/etc/env.php, är kommandoraden den rekommenderade metoden, särskilt för initiala konfigurationer. Kommandoraden innehåller validering som säkerställer att konfigurationen är syntaktiskt korrekt.
Förutsättning:
Installera Redis innan du fortsätter.
Ramverk som stöds
-
Zend Cache (2.4.8 och tidigare) - Legacy Redis-serverdel för Commerce 2.4.8 och tidigare:
- Äldre Redis-serverdel - Använder hela klassökvägen (
Magento\Framework\Cache\Backend\Redis) - Förinläsningsnycklar - Stöder förinläsning av cachenycklar som används ofta
- Lua-skript - Lua för skräpinsamling
- Komprimering - Stöder datakomprimering
- Äldre Redis-serverdel - Använder hela klassökvägen (
-
Symfony Cache (2.4.9+) - Från och med Commerce 2.4.9 har Symfony Cache en modern, PSR-6-kompatibel cacheimplementering för Redis med betydande prestandaförbättringar:
- Automatisk Redis-pipeline - Batchar flera åtgärder till en enda begäran, vilket minskar latensen
- PSR-6 TagAwareAdapter - Effektiv taggbaserad cacheogiltigförklaring med atomära åtgärder
- Igbinär serialisering - Binär serialisering minskar storleken på cacheposten med 45 % och ökar hastigheten med 5-10 %
- Förbättrade beständiga anslutningar - stabilare anslutningspoolning med bättre hantering av förankrade processer
- Optimerade Lua-skript - Körning på serversidan kombinerat med rörledning för maximal effektivitet
Konfigurera standardcachning för Redis
Kör kommandot setup:config:set och ange parametrar som är specifika för Redis standardcachning.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter>=<value>...
Med följande parametrar:
-
--cache-backend=redisaktiverar Redis standardcachning. Om den här funktionen redan har aktiverats utelämnar du den här parametern. -
--cache-backend-redis-<parameter>=<value>är en lista med nyckel-och-värde-par som konfigurerar standardcachelagring:
cache-backend-redis-server127.0.0.1cache-backend-redis-port6379cache-backend-redis-dbViktigt: Om du använder Redis för mer än en typ av cachning måste databasnumren vara olika. Vi rekommenderar att du tilldelar standardvärdet för cachningsdatabasen till 0, sidcachningsdatabasnumret till 1 och sessionslagringsdatabasnumret till 2.
0cache-backend-redis-passwordauth, som kräver att klienter autentiserar för att få åtkomst till databasen. Lösenordet konfigureras direkt i Redis konfigurationsfil: /etc/redis/redis.confcache-backend-redis-use-luaLua: Med Lua kan en del av programlogiken köras i Redis, vilket förbättrar prestanda och säkerställer datakonsekvens genom atomisk exekvering.
0cache-backend-redis-use-lua-on-gcLua: Med Lua kan en del av programlogiken köras i Redis, vilket förbättrar prestanda och säkerställer datakonsekvens genom atomisk exekvering.
1Exempelkommando (standardcache)
I följande exempel aktiveras Redis standardcachelagring, värden ställs in på 127.0.0.1 och databasnumret tilldelas till 0. Redis använder standardvärden för alla andra parametrar.
bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0
Konfigurera Redis-sidcache
Om du vill konfigurera Redis-sidcache på Commerce kör du kommandot setup:config:set med ytterligare parametrar.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-<parameter>=<value>...
Med följande parametrar:
-
--page-cache=redisaktiverar Redis-sidcache. Om den här funktionen redan har aktiverats utelämnar du den här parametern. -
--page-cache-redis-<parameter>=<value>är en lista med nyckel-och-värde-par som konfigurerar sidcache:
page-cache-redis-server127.0.0.1page-cache-redis-port6379page-cache-redis-dbViktigt: Om du använder Redis för mer än en typ av cachning måste databasnumren vara olika. Vi rekommenderar att du tilldelar standardvärdet för cachningsdatabasen till 0, sidcachningsdatabasnumret till 1 och sessionslagringsdatabasnumret till 2.
0page-cache-redis-passwordauth, som kräver att klienter autentiserar för att få åtkomst till databasen. Konfigurera lösenordet i Redis-konfigurationsfilen: /etc/redis/redis.confI följande exempel aktiveras Redis sidcache-lagring, värden anges till 127.0.0.1 och databasnumret tilldelas till 1. Alla andra parametrar ställs in på standardvärdet.
bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1
Granska konfigurationen av Commerce-miljön
Om du kör kommandona för att konfigurera Redis-cachelagring uppdateras Commerce-miljökonfigurationen (<Commerce-install-dir>app/etc/env.php):
| code language-php |
|---|
|
| code language-php |
|---|
|
| note |
|---|
| NOTE |
Använd den förenklade backend-typen 'backend' => 'redis' från och med Commerce 2.4.9 i stället för den fullständiga klassökvägen. Symfony Cache används automatiskt när det förenklade namnet anges. |
Konfigurera ytterligare cachealternativ
Förinläsningsfunktion för Redis
Eftersom Commerce lagrar konfigurationsdata i Redis-cachen kan du förhandsladda data som återanvänds mellan sidorna. Analysera data som överförs från Redis till Commerce för att hitta nycklar som måste läsas in i förväg. Adobe föreslår att data läses in i förväg på alla sidor, till exempel SYSTEM_DEFAULT, EAV_ENTITY_TYPES och DB_IS_UP_TO_DATE.
Redis använder pipeline för sammansatta inläsningsbegäranden. Nycklarna ska innehålla databasprefixet. Om till exempel databasprefixet är 061_ ser förinläsningsnyckeln ut så här: 061_SYSTEM_DEFAULT
| code language-php |
|---|
|
| code language-php |
|---|
|
När du använder förinläsningsfunktionen med en L2-cache måste du lägga till suffixet :hash till dina nycklar. L2-cachen överför bara hash-värdet av data, inte själva data.
'preload_keys' => [
'061_EAV_ENTITY_TYPES:hash',
'061_GLOBAL_PLUGIN_LIST:hash',
'061_DB_IS_UP_TO_DATE:hash',
'061_SYSTEM_DEFAULT:hash',
],
Parallell generering
Från och med Commerce 2.4.0 introducerade Adobe alternativet allow_parallel_generation för användare som inte vill vänta på lås. Det är inaktiverat som standard och Adobe rekommenderar att du inaktiverar det tills du har för många konfigurationer och/eller block.
Så här aktiverar du parallell generering:
bin/magento setup:config:set --allow-parallel-generation
Eftersom det är en flagga kan du inte inaktivera den med ett kommando. Ange konfigurationsvärdet manuellt till false:
| code language-php |
|---|
|
| code language-php |
|---|
|
Prestandaoptimering för Symfony Cache
Om du använder Symfony Cache kan du ytterligare optimera prestanda genom att konfigurera Igbinary-serialiseraren, installera det binära PHP-tillägget och phpredis-tillägget samt aktivera beständiga anslutningar.
Igbinär serialisering
Igbinär serialisering ger betydande prestandaförbättringar jämfört med PHP:s standardserialisering. Den måste konfigureras manuellt i 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
]
]
]
]
Installera tillägget PHP Igbinary
Om du vill använda binär serialisering måste du installera tillägget Igbinary i PHP.
Använder apt (rekommenderas för Debian/Ubuntu):
sudo apt-get install php-igbinary
sudo systemctl restart php-fpm
php -m | grep igbinary
Använder pec (alternativ metod):
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-tillägg: phpredis vs. Predis
Commerce 2.4.9+ innehåller automatisk återgång mellan phpredis (ursprungligt C-tillägg) och Predis (rent PHP-bibliotek). Installera phpredis för optimala prestanda:
Använder apt (rekommenderas för Debian/Ubuntu):
sudo apt-get install php-redis
sudo systemctl restart php-fpm
php -m | grep redis
Använder pec (alternativ metod):
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
Prestandajämförelse:
Beständiga anslutningar
Beständiga anslutningar återanvänder befintliga Redis-anslutningar över flera begäranden, vilket ger 5-15 % snabbare cacheåtgärder. Konfigurera i 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 för varje cachetyp för att förhindra anslutningskonflikter.Fullständig optimerad konfiguration
Här är en produktionsklar Symfonisk konfiguration som kombinerar alla prestandaoptimeringar:
'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
]
Kontrollera Redis-anslutningen
Så här kontrollerar du att Redis och Commerce fungerar ihop:
- Logga in på Redis- och Commerce-servern.
- Öppna en terminal.
- Kontrollera anslutningen genom att använda kommandot
redis-cli monitoreller kommandotredis-cli ping.
Om kommandona lyckas körs Redis och kan kommunicera med Commerce-programmet. Om de misslyckas finns det ett anslutningsproblem mellan Redis och Commerce som du måste lösa.
Redis-bildskärm, kommando
redis-cli monitor
Exempel på sidcachning:
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"
...
Om båda kommandona lyckas är Redis korrekt konfigurerat.
Inspektera komprimerade data
Använd verktyget RESP.app om du vill inspektera komprimerade sessionsdata och sidcache. Den stöder automatisk dekomprimering av data för session- och sidcache i Commerce 2 och visar PHP-sessionsdata i en läsbar form.