Usa Redis per la cache predefinita

Commerce fornisce opzioni della riga di comando per configurare la pagina Redis e il caching predefinito. Anche se è possibile configurare la memorizzazione in cache modificando <Commerce-install-dir>app/etc/env.php file, l’utilizzo della riga di comando è il metodo consigliato, in particolare per le configurazioni iniziali. La riga di comando fornisce la convalida, garantendo che la configurazione sia sintatticamente corretta.

Devi installare Redis prima di continuare.

Configurare il caching predefinito di Redis

Esegui il setup:config:set e specificare i parametri specifici del caching predefinito Redis.

bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-<parameter>=<value>...

Con i seguenti parametri:

  • --cache-backend=redis abilita il caching predefinito di Redis. Se questa funzione è già stata abilitata, ometti questo parametro.

  • --cache-backend-redis-<parameter>=<value> è un elenco di coppie chiave-valore che configurano il caching predefinito:

Parametro della riga di comando
Valore
Significato
Valore predefinito
cache-backend-redis-server
server
Nome host completo, indirizzo IP o percorso assoluto di un socket UNIX. Il valore predefinito 127.0.0.1 indica che Redis è installato sul server Commerce.
127.0.0.1
cache-backend-redis-port
porta
Porta di ascolto del server Redis
6379
cache-backend-redis-db
database
Obbligatorio se si utilizza Redis sia per la cache predefinita che per quella a pagina intera. È necessario specificare il numero di database di una delle cache; l'altra cache utilizza 0 per impostazione predefinita.

Importante: se utilizzi Redis per più di un tipo di memorizzazione in cache, i numeri di database devono essere diversi. È consigliabile assegnare il numero predefinito del database di memorizzazione nella cache a 0, il numero del database di memorizzazione nella cache delle pagine a 1 e il numero del database di memorizzazione nella sessione a 2.
0
cache-backend-redis-password
password
La configurazione della password Redis abilita una delle funzioni di sicurezza integrate: auth che richiede l'autenticazione dei client per accedere al database. La password viene configurata direttamente nel file di configurazione di Redis: /etc/redis/redis.conf

Esempio di comando

L'esempio che segue attiva il caching predefinito di Redis e imposta l'host su 127.0.0.1, e assegna il numero di database a 0. Redis utilizza i valori predefiniti per tutti gli altri parametri.

bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=127.0.0.1 --cache-backend-redis-db=0

Configurare il caching delle pagine Redis

Per configurare il caching delle pagine Redis su Commerce, esegui il comando setup:config:set con parametri aggiuntivi.

bin/magento setup:config:set --page-cache=redis --page-cache-redis-<parameter>=<value>...

Con i seguenti parametri:

  • --page-cache=redis abilita il caching delle pagine Redis. Se questa funzione è già stata abilitata, ometti questo parametro.

  • --page-cache-redis-<parameter>=<value> è un elenco di coppie chiave-valore che configurano il caching delle pagine:

Parametro della riga di comando
Valore
Significato
Valore predefinito
page-cache-redis-server
server
Nome host completo, indirizzo IP o percorso assoluto di un socket UNIX. Il valore predefinito 127.0.0.1 indica che Redis è installato sul server Commerce.
127.0.0.1
page-cache-redis-port
porta
Porta di ascolto del server Redis
6379
page-cache-redis-db
database
Obbligatorio se si utilizza Redis sia per la cache predefinita che per quella a pagina intera. È necessario specificare il numero di database di una delle cache; l'altra cache utilizza 0 per impostazione predefinita.
Importante: se utilizzi Redis per più di un tipo di memorizzazione in cache, i numeri di database devono essere diversi. È consigliabile assegnare il numero predefinito del database di memorizzazione nella cache a 0, il numero del database di memorizzazione nella cache delle pagine a 1 e il numero del database di memorizzazione nella sessione a 2.
0
page-cache-redis-password
password
La configurazione della password Redis abilita una delle funzioni di sicurezza integrate: auth che richiede l'autenticazione dei client per accedere al database. Configura la password nel file di configurazione Redis: /etc/redis/redis.conf

Esempio di comando

L’esempio che segue attiva il caching delle pagine Redis e imposta l’host su 127.0.0.1, e assegna il numero di database a 1. Tutti gli altri parametri vengono impostati sul valore predefinito.

bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=127.0.0.1 --page-cache-redis-db=1

Risultati

Come risultato dei due comandi di esempio, Commerce aggiunge righe simili alle seguenti a <Commerce-install-dir>app/etc/env.php:

'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'
            ]
        ]
    ]
],

Utilizzo di AWS ElastiCache con l’istanza EC2

A partire dalla versione 2.4.3 di Commerce, le istanze in hosting su Amazon EC2 possono utilizzare un AWS ElastiCache al posto di un’istanza Redis locale.

WARNING
Questa sezione funziona solo per le istanze Commerce in esecuzione su VPC Amazon EC2. Non funziona per gli impianti locali.

Configurare un cluster Redis

Dopo configurazione di un cluster Redis in AWS, configura l’istanza EC2 per utilizzare ElastiCache.

  1. Creare un cluster ElastiCache nella stessa regione e VPC dell’istanza EC2.

  2. Verifica la connessione.

    • Aprire una connessione SSH all’istanza EC2

    • Nell’istanza EC2, installa il client Redis:

      code language-bash
      sudo apt-get install redis
      
    • Aggiungi una regola in entrata al gruppo di sicurezza EC2: Tipo - Custom TCP, port - 6379, Source - 0.0.0.0/0

    • Aggiungi una regola in entrata al gruppo di sicurezza del cluster ElastiCache: Type - Custom TCP, port - 6379, Source - 0.0.0.0/0

    • Connessione a Redis CLI:

      code language-bash
      redis-cli -h <ElastiCache Primary Endpoint host> -p <ElastiCache Primary Endpoint port>
      

Configurare Commerce per l'utilizzo del cluster

Commerce supporta più tipi di configurazioni di caching. In genere, le configurazioni di caching sono suddivise tra front-end e back-end. Il caching front-end è classificato come default, utilizzato per qualsiasi tipo di cache. Puoi personalizzare o suddividere in cache di livello inferiore per ottenere prestazioni migliori. Una comune configurazione Redis separa la cache predefinita e la cache delle pagine nel proprio Redis Database (RDB).

Esegui setup comandi per specificare gli endpoint Redis.

Per configurare Commerce per Redis come memorizzazione in cache predefinita:

bin/magento setup:config:set --cache-backend=redis --cache-backend-redis-server=<ElastiCache Primary Endpoint host> --cache-backend-redis-port=<ElastiCache Primary Endpoint port> --cache-backend-redis-db=0

Per configurare Commerce per il caching delle pagine Redis:

bin/magento setup:config:set --page-cache=redis --page-cache-redis-server=<ElastiCache Primary Endpoint host> --page-cache-redis-port=<ElastiCache Primary Endpoint port> --page-cache-redis-db=1

Per configurare Commerce per l'utilizzo di Redis per l'archiviazione delle sessioni:

bin/magento setup:config:set --session-save=redis --session-save-redis-host=<ElastiCache Primary Endpoint host> --session-save-redis-port=<ElastiCache Primary Endpoint port> --session-save-redis-log-level=4 --session-save-redis-db=2

Verificare la connettività

Verificare che Commerce stia parlando con ElastiCache:

  1. Apri una connessione SSH all’istanza Commerce EC2.

  2. Avviare il monitor Redis.

    code language-bash
    redis-cli -h <ElastiCache-Primary-Endpoint-host> -p <ElastiCache-Primary-Endpoint-port> monitor
    
  3. Apri una pagina nell’interfaccia utente di Commerce.

  4. Verificare la output cache nel tuo terminale.

Nuova implementazione della cache Redis

A partire dalla versione 2.3.5 di Commerce, si consiglia di utilizzare l’implementazione della cache Redis estesa: \Magento\Framework\Cache\Backend\Redis.

'cache' => [
    'frontend' => [
        'default' => [
            'backend' => '\\Magento\\Framework\\Cache\\Backend\\Redis',
            'backend_options' => [
                'server' => '127.0.0.1',
                'database' => '0',
                'port' => '6379'
            ],
        ],
],

Funzione di precaricamento Redis

Poiché Commerce memorizza i dati di configurazione nella cache Redis, possiamo precaricare i dati riutilizzati tra le pagine. Per trovare le chiavi che devono essere precaricate, analizza i dati trasferiti da Redis a Commerce. Consigliamo di precaricare i dati caricati su ogni pagina, ad esempio SYSTEM_DEFAULT, EAV_ENTITY_TYPES, DB_IS_UP_TO_DATE.

Redis utilizza pipeline per comporre le richieste di caricamento. Le chiavi devono includere il prefisso del database; ad esempio, se il prefisso del database è 061_, il tasto di precaricamento si presenta come: 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_'
        ]
    ]
]

Se utilizzi la funzione di precaricamento con la cache L2, non dimenticare di aggiungere :hash alle chiavi, poiché la cache L2 trasferisce solo l’hash dei dati, non i dati stessi:

'preload_keys' => [
    '061_EAV_ENTITY_TYPES:hash',
    '061_GLOBAL_PLUGIN_LIST:hash',
    '061_DB_IS_UP_TO_DATE:hash',
    '061_SYSTEM_DEFAULT:hash',
],

Generazione parallela

A partire dalla versione 2.4.0, è stata introdotta la allow_parallel_generation per gli utenti che desiderano eliminare le attese per i blocchi.
È disattivato per impostazione predefinita e si consiglia di disattivarlo fino a quando non si dispone di configurazioni e/o blocchi eccessivi.

Per abilitare la generazione parallela:

bin/magento setup:config:set --allow-parallel-generation

Poiché è un flag, non è possibile disattivarlo con un comando. È necessario impostare manualmente il valore di configurazione su false:

    '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
    ],

Verifica connessione Redis

Per verificare che Redis e Commerce funzionino insieme, accedete al server che esegue Redis, aprite un terminale e utilizzate il comando di monitoraggio Redis o il comando ping.

Comando Redis Monitor

redis-cli monitor

Output di esempio per il caching delle pagine:

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 ...

Ridisattiva comando ping

redis-cli ping

La risposta prevista è: PONG

Se entrambi i comandi sono riusciti, Redis viene configurato correttamente.

Analisi dei dati compressi

Per verificare i dati compressi di Session e Page Cache, RESP.app supporta la decompressione automatica della cache delle sessioni e delle pagine di Commerce 2 e visualizza i dati della sessione PHP in un formato leggibile.

recommendation-more-help
386822bd-e32c-40a8-81c2-ed90ad1e198c