Konfigurera Valkey för standard- och sidcache
Commerce tillhandahåller kommandoradsalternativ för att konfigurera standard- och sidcache-lagring för Valkey. Du kan konfigurera cachelagring genom att redigera filen <Commerce-install-dir>app/etc/env.php, men du bör använda kommandoraden, särskilt för inledande konfigurationer. Kommandoraden ger validering och säkerställer att konfigurationen är syntaktiskt korrekt.
Förutsättning:
Installera Valkey innan du fortsätter.
Ramverk som stöds
-
Zend Cache (2.4.8 och tidigare) - Legacy Valkey backend för Commerce 2.4.8 och tidigare:
- Äldre Valkey-serverdel - Använder hela klassökvägen (
Magento\Framework\Cache\Backend\Valkey) - 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 Valkey-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 Valkey med betydande prestandaförbättringar:
- Automatisk rörläggning av Valkey - Batchar flera åtgärder till en enda begäran, vilket minskar fördröjningen
- 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 standardcachelagring för Valkey
Kör kommandot setup:config:set och ange parametrar för standardcachelagring av Valkey.
bin/magento setup:config:set --cache-backend=valkey --cache-backend-valkey-<parameter>=<value>...
-
--cache-backend=valkeyaktiverar standardcachningen för Valkey. Om den här funktionen redan har aktiverats utelämnar du den här parametern. -
--cache-backend-valkey-<parameter>=<value>är en lista med nyckelvärdepar som konfigurerar standardcachelagring:
cache-backend-valkey-server127.0.0.1 anger att Valkey är installerat på Commerce-servern.127.0.0.1cache-backend-valkey-port6379cache-backend-valkey-db0 som standard.Viktigt: Om du använder Valkey för mer än en typ av cachelagring måste databasnumren vara olika. Adobe rekommenderar att du tilldelar standardvärdet för cachningsdatabasen till
0, sidcachningsdatabasnumret till 1 och sessionslagringsdatabasnumret till 2.0cache-backend-valkey-passwordauth, som kräver att klienter autentiserar för att få åtkomst till databasen. Lösenordet konfigureras direkt i Valkeys konfigurationsfil: /etc/valkey/valkey.confcache-backend-valkey-use-luaLUA: Lua gör det möjligt för oss att köra en del av programlogiken inuti Valkey, vilket förbättrar prestanda och säkerställer datakonsekvens genom atomexekvering.
0cache-backend-valkey-use-lua-on-gcLUA: Lua gör det möjligt för oss att köra en del av programlogiken inuti Valkey, vilket förbättrar prestanda och säkerställer datakonsekvens genom atomexekvering.
1Exempelkommando (standardcache)
I följande exempel aktiveras standardcachelagring för Valkey, värddatorn ställs in på 127.0.0.1 och databasnumret tilldelas till 0. Valkey använder standardvärden för alla andra parametrar.
bin/magento setup:config:set --cache-backend=valkey --cache-backend-valkey-server=127.0.0.1 --cache-backend-valkey-db=0
Konfigurera cachelagring av Valkey-sidor
Kör kommandot setup:config:set med ytterligare parametrar för att konfigurera Valkey-sidcache på Commerce.
bin/magento setup:config:set --page-cache=valkey --page-cache-valkey-<parameter>=<value>...
Med följande parametrar:
-
--page-cache=valkeyaktiverar cachelagring av Valkey-sidor. Om den här funktionen redan har aktiverats utelämnar du den här parametern. -
--page-cache-valkey-<parameter>=<value>är en lista med nyckel-och-värde-par som konfigurerar sidcache:
page-cache-valkey-server127.0.0.1 anger att Valkey är installerat på Commerce-servern.127.0.0.1page-cache-valkey-port6379page-cache-valkey-db0 som standard.Viktigt: Om du använder Valkey för mer än en typ av cachelagring 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-valkey-passwordauth, som kräver att klienter autentiserar för att få åtkomst till databasen. Konfigurera lösenordet i Valkey-konfigurationsfilen: /etc/valkey/valkey.confExempelkommando (sidcache)
I följande exempel aktiveras cachelagring av Valkey-sidor, värddatorn ställs in på 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=valkey --page-cache-valkey-server=127.0.0.1 --page-cache-valkey-db=1
Granska konfigurationen av Commerce-miljön
Om du kör kommandona för att konfigurera Valkey-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' => 'valkey' 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 Valkey
Eftersom Commerce lagrar konfigurationsdata i Valkey-cachen kan du förhandsladda data som återanvänds mellan sidorna. Analysera data som överförs från Valkey till Commerce för att hitta nycklar som måste vara förinlästa. 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.
Valkey 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' => 'valkey',
'database' => '0',
'port' => '6379',
'serializer' => 'igbinary', // Enable Igbinary serialization
]
],
'page_cache' => [
'backend_options' => [
'server' => 'valkey',
'database' => '1',
'port' => '6379',
'serializer' => 'igbinary', // Enable Igbinary for page cache too
]
]
]
]
Installera tillägget PHP Igbinary
Om du vill använda den binära serialiseringen 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 Valkey-anslutningar över begäranden, vilket ger 5-15 % snabbare cacheåtgärder. Konfigurera i app/etc/env.php:
'cache' => [
'frontend' => [
'default' => [
'backend_options' => [
'server' => 'valkey',
'database' => '0',
'port' => '6379',
'persistent' => '1',
'persistent_id' => 'cache_default',
'timeout' => '2.5',
'read_timeout' => '2.0',
]
],
'page_cache' => [
'backend_options' => [
'server' => 'valkey',
'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 konfiguration som kombinerar alla prestandaoptimeringar:
'cache' => [
'frontend' => [
'default' => [
'id_prefix' => 'b0b_',
'backend' => 'valkey',
'backend_options' => [
'server' => 'valkey',
'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' => 'valkey',
'backend_options' => [
'server' => 'valkey',
'database' => '1',
'port' => '6379',
'serializer' => 'igbinary',
'compress_data' => '0',
'persistent' => '1',
'persistent_id' => 'cache_fpc',
]
]
],
'allow_parallel_generation' => false
]
Verifiera Valkey-anslutning
Så här kontrollerar du att Valkey och Commerce fungerar ihop:
- Logga in på servern som kör Valkey och Commerce.
- Öppna en terminal.
- Kontrollera anslutningen genom att använda kommandot
valkey-cli monitoreller kommandotvalkey-cli ping.
Om kommandona lyckas körs Valkey och kan kommunicera med Commerce-programmet. Om de misslyckas finns det ett anslutningsproblem mellan Valkey och Commerce som du måste lösa.
Valkey monitor command
valkey-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"
1476826133.883312 [0 127.0.0.1:52369] "hget" "zc:k:ea6_GLOBAL__EVENT_CONFIG_CACHE" "d"
1476826133.898431 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DB_PDO_MYSQL_DDL_STAGING_UPDATE_1" "d"
1476826133.898794 [0 127.0.0.1:52369] "hget" "zc:k:ea6_RESOLVED_STORES_D1BEFA03C79CA0B84ECC488DEA96BC68" "d"
1476826133.905738 [0 127.0.0.1:52369] "hget" "zc:k:ea6_DEFAULT_CONFIG_CACHE_STORE_DEFAULT_10__235__32__1080MAGENTO2" "d"
... more ...
1476826210.634998 [0 127.0.0.1:52439] "hmset" "zc:k:ea6_MVIEW_CONFIG" "d" "a:18:{s:19:\"design_config_dummy\";a:4:{s:7:\"view_id\";s:19:\"design_config_dummy\";s:12:\"action_class\";s:39:\"Magento\\Theme\\Model\\Indexer\\Mview\\Dummy\";s:5:\"group\";s:7:\"indexer\";s:13:\"subscriptions\";a:0:{}}s:14:\"customer_dummy\";a:4:{s:7:\"view_id\";s:14:\"customer_dummy\";s:12:\"action_class\";s:42:\"Magento\\Customer\\Model\\Indexer\\Mview\\Dummy\";s:5:\"group\";s:7:\"indexer\";s:13:\"subscriptions\";a:0:{}}s:13:\"cms_page_grid\";a:4:{s:7:\"view_id\";s:13:\"cms_page_grid\";s:12:\"action_class\";s:43:\"Magento\\Catalog\\Model\\Indexer\\Category\\Flat\";s:5:\"group\";s:7:\"indexer\";s:13:\"subscriptions\";a:1:{s:8:\"cms_page\";a:3:{s:4:\"name\";s:8:\"cms_page\";s:6:\"column\";s:7:\"page_id\";s:18:\"subscription_model\";N;}}}s:21:\"catalog_category_flat\";a:4:{s:7:\"view_id\";s:21:\"catalog_category_flat\";s:12:\"action_class\";s:43:\"Magento\\Catalog\\Model\\Indexer\\Category\\Flat\";s:5:\"group\";s:7:\"indexer\";s:13:\"subscriptions\";a:6:{s:23:\"catalog_category_entity\";a:3:{s:4:\"name\";s:23:\"catalog_category_entity\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";N;}s:31:\"catalog_category_entity_decimal\";a:3:{s:4:\"name\";s:31:\"catalog_category_entity_decimal\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";s:71:\"Magento\\CatalogStaging\\Model\\Mview\\View\\Category\\Attribute\\Subscription\";}s:27:\"catalog_category_entity_int\";a:3:{s:4:\"name\";s:27:\"catalog_category_entity_int\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";s:71:\"Magento\\CatalogStaging\\Model\\Mview\\View\\Category\\Attribute\\Subscription\";}s:28:\"catalog_category_entity_text\";a:3:{s:4:\"name\";s:28:\"catalog_category_entity_text\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";s:71:\"Magento\\CatalogStaging\\Model\\Mview\\View\\Category\\Attribute\\Subscription\";}s:31:\"catalog_category_entity_varchar\";a:3:{s:4:\"name\";s:31:\"catalog_category_entity_varchar\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";s:71:\"Magento\\CatalogStaging\\Model\\Mview\\View\\Category\\Attribute\\Subscription\";}s:32:\"catalog_category_entity_datetime\";a:3:{s:4:\"name\";s:32:\"catalog_category_entity_datetime\";s:6:\"column\";s:9:\"entity_id\";s:18:\"subscription_model\";s:71:\"Magento\\CatalogStaging\\Model\\Mview\\View\\Category\\Attribute\\Subscription\";}}}s:24:\"catalog_category_product\";a:4:{s:7:\"view_id\";s:24:\"catalog_category_product\";s:12:\"action_class\";s:46:\"Magento\\Catalog\\Model\\Indexer\\Category\\Product\";s:5:\"group\";s:7:\"indexer\";s:13:\"subscriptions\";a:2:{s:23:\"catalog_category_entity\";a:3:{s:4:\"name\";s:23:\"catalog_category_entity\";s:6:\"column\"
... more ...
Valkey ping-kommando
valkey-cli ping
Det förväntade svaret är: PONG
Om båda kommandona slutförs, ställs Valkey in korrekt.
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 ett läsbart format.