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)
  • 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
Symfony Cache (2.4.9+)
  • 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=valkey aktiverar 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:

NOTE
Från och med Adobe Commerce 2.4.9 har Valkey officiellt ersatt Redis i CLI-verktygen. Använd motsvarande Redis CLI-kommandon för version 2.4.8 och tidigare.
Kommandoradsparameter
Värde
Betydelse
Standardvärde
cache-backend-valkey-server
server
Fullständigt kvalificerat värdnamn, IP-adress eller absolut sökväg till en UNIX-socket. Standardvärdet 127.0.0.1 anger att Valkey är installerat på Commerce-servern.
127.0.0.1
cache-backend-valkey-port
port
avlyssningsport för Valkey-server
6379
cache-backend-valkey-db
databas
Krävs om du använder Valkey för både standardcache och helsidescache. Ange databasnumret för en av cacherna. det andra cacheminnet använder 0 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.
0
cache-backend-valkey-password
lösenord
När du konfigurerar ett Valkey-lösenord aktiveras en av de inbyggda säkerhetsfunktionerna: kommandot auth, som kräver att klienter autentiserar för att få åtkomst till databasen. Lösenordet konfigureras direkt i Valkeys konfigurationsfil: /etc/valkey/valkey.conf
cache-backend-valkey-use-lua
use_lua
Aktivera eller inaktivera LUA.

LUA: 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.
0
cache-backend-valkey-use-lua-on-gc
use_lua_on_gc
Aktivera eller inaktivera LUA för skräpinsamling.

LUA: 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.
1

Exempelkommando (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
NOTE
Från och med Adobe Commerce 2.4.9 har Valkey officiellt ersatt Redis i CLI-verktygen. Använd motsvarande Redis CLI-kommandon för version 2.4.8 och tidigare.

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=valkey aktiverar 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:

Kommandoradsparameter
Värde
Betydelse
Standardvärde
page-cache-valkey-server
server
Fullständigt kvalificerat värdnamn, IP-adress eller absolut sökväg till en UNIX-socket. Standardvärdet 127.0.0.1 anger att Valkey är installerat på Commerce-servern.
127.0.0.1
page-cache-valkey-port
port
Valkey server listen port.
6379
page-cache-valkey-db
databas
Krävs om du använder Valkey för både standardcache och helsidescache. Ange databasnumret för en av cacherna. det andra cacheminnet använder 0 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.
0
page-cache-valkey-password
lösenord
När du konfigurerar ett Valkey-lösenord aktiveras en av de inbyggda säkerhetsfunktionerna: kommandot auth, som kräver att klienter autentiserar för att få åtkomst till databasen. Konfigurera lösenordet i Valkey-konfigurationsfilen: /etc/valkey/valkey.conf

Exempelkommando (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
NOTE
Från och med Adobe Commerce 2.4.9 har Valkey officiellt ersatt Redis i CLI-verktygen. Använd motsvarande Redis CLI-kommandon för version 2.4.8 och tidigare.

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):

Zend Cache (2.4.8 och tidigare)
code language-php
'cache' => [
    'frontend' => [
        'default' => [
            'backend' => 'Magento\\Framework\\Cache\\Backend\\Valkey',
            'backend_options' => [
                'server' => '127.0.0.1',
                'database' => '0',
                'port' => '6379'
            ],
        ],
        'page_cache' => [
            'backend' => 'Magento\\Framework\\Cache\\Backend\\Valkey',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'database' => '1',
                'compress_data' => '0'
            ]
        ]
    ]
],
Symfony Cache (2.4.9+)
code language-php
'cache' => [
    'frontend' => [
        'default' => [
            'backend' => 'valkey',
            'backend_options' => [
                'server' => '127.0.0.1',
                'database' => '0',
                'port' => '6379'
            ],
        ],
        'page_cache' => [
            'backend' => 'valkey',
            'backend_options' => [
                'server' => '127.0.0.1',
                'port' => '6379',
                'database' => '1',
                'compress_data' => '0'
            ]
        ]
    ]
],
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

Zend Cache
code language-php
'cache' => [
    'frontend' => [
        'default' => [
            'id_prefix' => '061_',
            'backend' => 'Magento\\Framework\\Cache\\Backend\\Valkey',
            'backend_options' => [
                'server' => 'valkey',
                '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_'
        ]
    ]
]
Symfony-cache
code language-php
'cache' => [
    'frontend' => [
        'default' => [
            'id_prefix' => '061_',
            'backend' => 'valkey',
            'backend_options' => [
                'server' => 'valkey',
                '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_'
        ]
    ]
]

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:

Zend Cache
code language-php
    'cache' => [
        'frontend' => [
            'default' => [
                'id_prefix' => 'b0b_',
                'backend' => 'Magento\\Framework\\Cache\\Backend\\Valkey',
                'backend_options' => [
                    'server' => 'valkey',
                    'database' => '0',
                    'port' => '6379',
                    'password' => '',
                    'compress_data' => '1',
                    'compression_lib' => ''
                ]
            ],
            'page_cache' => [
                'id_prefix' => 'b0b_'
            ]
        ],
        'allow_parallel_generation' => false
    ],
Symfony-cache
code language-php
    'cache' => [
        'frontend' => [
            'default' => [
                'id_prefix' => 'b0b_',
                'backend' => 'valkey',
                'backend_options' => [
                    'server' => 'valkey',
                    'database' => '0',
                    'port' => '6379',
                    'serializer' => 'igbinary',
                    'compress_data' => '1',
                    'compression_lib' => 'gzip'
                ]
            ],
            'page_cache' => [
                'id_prefix' => 'b0b_'
            ]
        ],
        'allow_parallel_generation' => false
    ],

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:

Åtgärd
Predis
phpredis
Förbättring
Cache GET
1-5 ms
0,5-2 ms
2-3 gånger snabbare
Cacheuppsättning
2-6 ms
0,8-2,5 ms
2-3 gånger snabbare
Taggåtgärder
10-30 ms
3-10 ms
3-4 gånger snabbare

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',
            ]
        ]
    ]
]
IMPORTANT
Använd en unik 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:

  1. Logga in på servern som kör Valkey och Commerce.
  2. Öppna en terminal.
  3. Kontrollera anslutningen genom att använda kommandot valkey-cli monitor eller kommandot valkey-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.

recommendation-more-help
commerce-operations-help-configuration