Magento è stato progettato fin dall’inizio per lavorare con Redis: la documentazione ufficiale lo indica come sistema consigliato sia per la cache sia per le sessioni dei clienti. Sul nostro hosting Redis è già disponibile per il tuo account; in questa guida vediamo come collegarlo a Magento, come dividere i dati in modo ordinato e quali errori evitare.

Cosa può fare Redis per Magento

Magento può usare Redis per tre cose distinte:

  • cache predefinita: configurazione, layout, blocchi, traduzioni e tutto ciò che Magento salva nella sua cache interna. Di serie finisce in file sul disco; in Redis è più rapida da leggere e da invalidare;
  • cache delle pagine: la cache integrata delle pagine complete, che di serie usa anch’essa il disco;
  • sessioni: i dati della visita di ogni cliente, che di serie Magento salva in file.

Le prime due sono cache vere e proprie: se si svuotano, Magento le ricostruisce. Le sessioni no: contengono lo stato di chi sta navigando in quel momento, e vanno trattate con più riguardo.

Cosa ti serve

  1. Redis attivo sul tuo account, dalla sezione Redis del pannello DirectAdmin. Prendi nota del percorso del socket, che ha la forma /home/tuoutente/.redis/redis.sock.
  2. L’accesso SSH, per usare la riga di comando di Magento. Da noi è disponibile sulla porta 7530, con una chiave SSH che aggiungi dal pannello.
  3. Un backup recente, in particolare del file app/etc/env.php, che è quello che i comandi modificano. I backup automatici dell’account ci sono, ma una copia del file fatta un attimo prima ti permette di tornare indietro in pochi secondi.

Un numero di database per ogni uso

Redis mette a disposizione più database numerati nella stessa istanza. La documentazione di Magento raccomanda di usare un numero diverso per ogni tipo di dato: per esempio 0 per la cache predefinita, 1 per la cache delle pagine e 2 per le sessioni. Così uno svuotamento della cache non tocca mai le sessioni.

Ricorda che l’istanza Redis è una per account. Se nello stesso spazio hai altri siti che usano Redis, come un WordPress o un secondo negozio, assegna a Magento numeri che non usa nessun altro. Molti plugin per WordPress lavorano di serie sul database 0: in quel caso conviene dare a Magento numeri diversi, per esempio 3, 4 e 5.

Configurare la cache predefinita

Dalla cartella principale di Magento, collegato in SSH con il tuo utente, il comando è questo:

bin/magento setup:config:set --cache-backend=redis \
  --cache-backend-redis-server=/home/tuoutente/.redis/redis.sock \
  --cache-backend-redis-db=0

Al posto di un nome host o di un indirizzo IP indichi il percorso del socket: la documentazione di Magento prevede espressamente questa possibilità. Non serve una password, perché l’accesso al socket è riservato al tuo account. Se Magento ti chiede se sovrascrivere la configurazione esistente della cache, rispondi di sì.

Configurare la cache delle pagine

bin/magento setup:config:set --page-cache=redis \
  --page-cache-redis-server=/home/tuoutente/.redis/redis.sock \
  --page-cache-redis-db=1

Questa riguarda la cache delle pagine integrata in Magento. Se il negozio usa un altro sistema per le pagine complete, o è servito tramite la rete iWebLab Edge, prima di cambiare questa parte apri un ticket: ti diciamo come conviene organizzare i livelli di cache nel tuo caso, per non duplicare il lavoro.

Configurare le sessioni

bin/magento setup:config:set --session-save=redis \
  --session-save-redis-host=/home/tuoutente/.redis/redis.sock \
  --session-save-redis-db=2

Anche qui il parametro dell’host accetta il percorso del socket. La configurazione delle sessioni prevede altre opzioni, per esempio sulla durata minima e massima delle sessioni, sul numero di richieste contemporanee per la stessa sessione e sulla compressione: i valori predefiniti vanno bene nella maggior parte dei negozi, e conviene cambiarli solo per risolvere un problema preciso.

Al momento del passaggio le sessioni salvate su file non vengono trasferite in Redis: chi è collegato in quel momento potrebbe dover rifare l’accesso. Per questo è meglio scegliere un orario tranquillo.

Dopo la configurazione

I comandi scrivono le impostazioni in app/etc/env.php. Al termine svuota la cache:

bin/magento cache:flush

Poi apri il negozio, naviga qualche pagina, metti un prodotto nel carrello e fai l’accesso con un account di prova. Se tutto funziona, controlla che Redis riceva davvero i dati. Il comando redis-cli ti permette di interrogare la tua istanza tramite il socket:

redis-cli -s /home/tuoutente/.redis/redis.sock ping
redis-cli -s /home/tuoutente/.redis/redis.sock info keyspace

Il primo deve rispondere PONG. Il secondo elenca i database in uso con il numero di chiavi di ciascuno: dovresti vedere comparire quelli che hai scelto per Magento.

Gli errori da evitare

Svuotare tutto Redis

Comandi come FLUSHALL cancellano tutti i database dell’istanza, sessioni comprese: i clienti collegati perderebbero la sessione e con essa l’accesso. Per pulire la cache usa sempre bin/magento cache:flush o cache:clean, che agiscono sulle cache e non sulle sessioni salvate in un database separato.

Condividere i numeri di database

Due applicazioni sullo stesso numero di database si danneggiano a vicenda quando una delle due svuota la cache. Tieni nota dei numeri assegnati a ogni sito dell’account.

Dimenticare l’ambiente di prova

Una copia di prova del negozio sullo stesso account, se clonata con lo stesso env.php, scriverebbe negli stessi database del negozio vero. Dopo ogni clonazione assegna alla copia numeri diversi.

Lasciare crescere la memoria

Con cataloghi ampi la cache delle pagine può occupare molto spazio. La memoria usata da Redis rientra nelle risorse del tuo piano: se vedi che cresce troppo, parlane con noi prima di cambiare impostazioni a caso.

Redis non è tutto

Magento è esigente anche su altri fronti: cron configurati correttamente, indici aggiornati, modalità di produzione, motore di ricerca. Redis toglie lavoro al disco e al database, ma non compensa un’installazione in modalità sviluppatore o indici fermi da giorni. Se il negozio è lento, conviene guardare il quadro completo.

I nostri piani hosting Magento includono Redis. Per un controllo della configurazione, apri un ticket dall’area clienti.

Altri articoli su Guida a Redis

Parliamone

Un hosting che ti spiega le cose, e poi le fa

Questi articoli nascono dalle domande dei nostri clienti. Se vuoi un hosting dove dietro ogni risposta c’è un tecnico vero, parliamone.

  • 4,9 su 5 su Trustpilot264 recensioni, il 96% a cinque stelle
  • Risponde un tecnicoIn italiano, da chi gestisce i server
  • Il trasloco lo facciamo noiSito, database e posta, controllati prima di spostare i DNS