Come configurare Redis per Magento 2

Redis è un metodo di memorizzazione nella cache che può aumentare la velocità del backend e del frontend del tuo negozio. 

Questo articolo spiegherà come configurare Redis nel tuo negozio Magento 2 e come lavorare con redis-cli.

Configurare Redis Cache per Magento 2

Ci sono due modi per configurare Redis Cache per Magento 2. Puoi eseguire un comando che aggiorna automaticamente env.php con i dettagli corretti oppure puoi modificare manualmente il file env.php.

Configura Redis Cache per Magento 2 tramite la riga di comando

Puoi utilizzare il comando seguente per abilitare la memorizzazione nella cache del backend Redis:

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

Configura Redis Cache per Magento 2 modificando il file env.php

Per abilitare la memorizzazione nella cache in Redis, estendi il tuo /data/web/magento2/app/etc/env.php con il seguente frammento. Aggiungilo tra le chiavi della cache. (Senza la chiave della cache nello snippet)

'cache' => array(

   'frontend' => array(

       'default' => array(

           'backend'         => 'Cm_Cache_Backend_Redis',

           'backend_options' => array(

               'server' => '127.0.0.1',

               'port'   => '6379',

           ),

       ),

   ),

),

Ora svuota la cache:

rm -rf /data/web/magento2/var/cache/*

redis-cli flushall

Configurare Redis Full Page Caching per Magento 2

Per abilitare il caching delle pagine Redis, estendi il tuo `/ data / web / magento2 / app / etc / env.php` con il seguente frammento.

Dovresti incollarlo tra le chiavi `cache`, quindi lascia fuori il tag cache in questo frammento.

'cache' => array (

       'frontend' => array (

           'default' => array (

               'backend'         => 'Cm_Cache_Backend_Redis',

               'backend_options' => array (

                   'server' => '127.0.0.1',

                   'port'   => '6379',

               ),

           ),

           // Start of snippet

           'page_cache' => array (

               'backend'         => 'Cm_Cache_Backend_Redis',

               'backend_options' => array (

                   'server'        => '127.0.0.1',

                   'port'          => '6379',

                   'database'      => '1',

                   'compress_data' => '0',

               ),

           ),

           // End of snippet

       ),

   ),

Un esempio completo puoi visualizzarlo qui

Ora svuota la cache:

rm -rf /data/web/magento2/var/cache/*

redis-cli flushall

Svuota la Cache

Per svuotare la cache di Magento, cancella il database Redis corrispondente al database Redis configurato:

redis-cli -n $db flushdb

o in alternativa

n98-magerun2 o lo strumento cli di Magento:

 

## Flush using n98-magerun2

n98-magerun2 cache:flush


## Flush using magento cli

cd /data/web/magento2 && php bin/magento cache:flush

 

Per svuotare tutte le sessioni, cache ecc. (Svuotare l’intera istanza di Redis), utilizzare il seguente comando:

 

redis-cli flushall

Modifica della libreria di compressione

È possibile utilizzare la libreria di compressione “Snappy”. Maggiori informazioni su Snappy possono essere trovate nel log delle modifiche: Release-4224.

 

Per utilizzare la libreria di compressione Snappy per la cache di Redis devi aggiungere ‘compression_library’ => ‘snappy’, nel tuo env.php sotto:

 

‘page_cache’ => array (

‘backend’         => ‘Cm_Cache_Backend_Redis’,

‘backend_options’ => array (

Configura Magento 2 per utilizzare Redis come Session Store

Puoi usare Redis anche per memorizzare le sessioni!

 

In questo modo le sessioni vengono archiviate in memoria, rendendo il negozio più veloce e utilizzando meno IO rispetto a quando si utilizza MySQL o file come archivio di sessione.

 

Configura Magento 2 per archiviare le sessioni in Redis

Poiché Magento 2 supporta completamente Redis, non è necessario installare estensioni aggiuntive per configurare Redis.

Tutto quello che devi fare è estendere la tua app / etc / env.php e svuotare la cache.

 

Per abilitare l’archiviazione della sessione in Redis, estendi il tuo /data/web/magento2/app/etc/env.php con il seguente frammento:

‘session’ => array(

   ‘save’ => ‘redis’,

   ‘redis’ => array(

       ‘host’                  => ‘redismaster’,

       ‘port’                  => ‘6379’,

       ‘password’              => ”,

       ‘timeout’               => ‘2.5’,

       ‘persistent_identifier’ => ”,

       ‘database’              => ‘2’,

       ‘compression_threshold’ => ‘2048’,

       ‘compression_library’   => ‘gzip’,

       ‘log_level’             => ‘1’,

       ‘max_concurrency’       => ‘6’,

       ‘break_after_frontend’  => ‘5’,

       ‘break_after_adminhtml’ => ’30’,

       ‘first_lifetime’        => ‘600’,

       ‘bot_first_lifetime’    => ’60’,

       ‘bot_lifetime’          => ‘7200’,

       ‘disable_locking’       => ‘0’,

       ‘min_lifetime’          => ’60’,

       ‘max_lifetime’          => ‘2592000’,

   ),

),

Ora aggiorna la cache

rm -rf /data/web/magento2/var/cache/*

redis-cli flushall

Abilita seconda istanza Redis per le sessioni

Abbiamo reso possibile abilitare una seconda istanza Redis più su misura per il salvataggio dei dati di sessione (maggiori informazioni possono essere trovate nel nostro changelog)

Per abilitare la seconda istanza Redis per le sessioni, esegui il comando: systemctl settings redis_persistent_instance –value True

Dopo aver abilitato la seconda istanza Redis è necessario aggiornare il file /data/web/public/app/etc/local.xml e modificare il valore della porta in 6378 invece del 6379 predefinito. Inoltre è necessario aggiungere la seguente riga al proprio crontab :

* * * * * redis-cli -p 6378 bgsave

Verifica se le tue sessioni sono archiviate in Redis

Per verificare se la tua configurazione funziona correttamente, cancella prima il session store:

rm / data / web / public / var / sessions / *

Ora apri il sito nel tuo browser e premi F5 alcune volte o accedi al pannello di amministrazione.

Se tutto va bene, nessun file di sessioni aggiuntive dovrebbe essere scritto in / data / web / var / sessions, ma invece nel database Redis:

redis-cli -n 2 keys \*

Risoluzione dei problemi

Una breve nota, quando ti imbatti nel limite massimo di memoria configurato, assicurati che le chiavi Redis necessarie siano impostate su volatile (assicurati una scadenza). In caso contrario, l’intera memoria configurata allocata si riempirà e Redis si “bloccherà”.

Quando la memoria dell’istanza Redis è piena e arriva una nuova scrittura, Redis rimuove le chiavi per fare spazio alla scrittura in base alla policy maxmemory dell’istanza. Questa è chiamata politica di sfratto.

In alcuni casi, vediamo che quando Redis raggiunge il limite configurato e cerca di far scadere le chiavi per fare spazio, la politica di sfratto si blocca in un ciclo. Ciò significa che le chiavi non scadranno e Redis raggiunge il limite.

Una soluzione temporanea è svuotare la cache di Redis, puoi farlo usando il comando flushall:

redis-cli flushall

Questo eliminerà tutti i database Redis disponibili. Tieni presente che questa è solo una soluzione temporanea. La causa sottostante è nel codice dell’applicazione e deve essere risolta in modo permanente.

Una guida più estesa sulla configurazione delle cache Redis può essere trovata nelle pagine della guida di Magento.

Bot

Come sai, le sessioni del tuo negozio online possono essere memorizzate anche su Redis. Se utilizzi la memorizzazione nella cache di Redis e archivi le sessioni anche in Redis, dovrai condividere la memoria Redis disponibile. Questo non dovrebbe essere un problema, tuttavia abbiamo visto scenari in cui un negozio memorizza le sue sessioni in Redis e ha avuto alcuni robot / crawler aggressivi che visitano il negozio. Ciò ha comportato la memorizzazione di una quantità di sessioni molto maggiore del solito in Redis, il che causa il riempimento della memoria di Redis in pochissimo tempo e l’arresto anomalo di Redis.

Se vuoi avere una visione più dettagliata del traffico dei bot puoi usare il comando pnl –yesterday –php –bots –fields ua | ordina | uniq -c | sort -n per avere una panoramica dei primi 10 bot che hanno visitato il tuo negozio online ieri. 

Andrea Saccà
FOUNDER Bhoost Hosting

Sharing tips and insights on Bhoost and Page Speed Optimization

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.