Oggi vedremo insieme una miglioria alla configurazione che vi abbiamo proposto nel precedente articolo su Magento, sostituendo a Memcache il server Redis.
Redis è un server chiave/valore residente in memoria a persistenza facoltativa e se integrato in Magento offre i seguenti vantaggi:
- E’ persistente, quindi il suo riavvio non elimina completamente la cache;
- Supporta la tecnologia master/slave, si può quindi configurare in modo semplice per eliminare il single point of failure;
- E’ stato progettato con molta attenzione ai meccanismi di eliminazione della cache; questo permette un uso ottimale della memoria;
- Le tags sono completamente supportate senza la necessità di ricorrere alla cache a due livelli;
- Supporta più database, ognuno dei quali può essere utilizzato per una funzionalità.
Il supporto a Redis è disponibile da Magento 1.8 in poi, per utilizzarlo su versioni più vecchie sono necessari moduli di terze parti.
Passiamo adesso all’ installazione. Per installare redis e il supporto PHP su un server Debian/Ubuntu basta eseguire i seguenti comandi:
apt-get update && apt-get install redis-server php5-redis
Trovate il file di configurazione di Redis in /etc/redis/redis.conf, consigliamo di impostare delle credenziali di autenticazione o far bindare il server solo su localhost; Redis di default abilita un meccanismo di salvataggio dei dati su disco.
Consigliamo di limitare l’uso della ram, in base a quella disponibile, impostando la seguente direttiva: (in questo esempio il limite è a 2GB)
maxmemory 2GB
maxmemory-policy allkeys-lru
Per configurare Redis su Magento si deve innanzitutto abilitare il relativo modulo, nel file app/etc/modules/Cm_RedisSession.xml impostare il valore di <active> a true, il file risulterà essere cosi trutturato:
<config> <modules> <Cm_RedisSession> <active>true</active> <codePool>community</codePool> </Cm_RedisSession> </modules> </config>
A questo punto se vogliamo storare le sessioni dobbiamo inserire nel file di configurazione app/etc/local.xml il seguente contenuto:
<session_save>db</session_save> <redis_session> <host>127.0.0.1</host> <port>6379</port> <password></password> <timeout>2.5</timeout> <persistent></persistent> <db>0</db> <compression_threshold>2048</compression_threshold> <compression_lib>gzip</compression_lib> <log_level>1</log_level> <max_concurrency>10</max_concurrency> <break_after_frontend>5</break_after_frontend> <bot_lifetime>7200</bot_lifetime> </redis_session>
Per abilitare la cache su Redis, sempre nel file app/etc/local.xml
<cache> <backend>Cm_Cache_Backend_Redis</backend> <backend_options> <server>127.0.0.1</server> <port>6379</port> <persistent></persistent> <database>1</database> <password></password> <force_standalone>0</force_standalone> <connect_retries>1</connect_retries> <read_timeout>10</read_timeout> <automatic_cleaning_factor>0</automatic_cleaning_factor> <compress_data>1</compress_data> <compress_tags>1</compress_tags> <compress_threshold>20480</compress_threshold> <compression_lib>gzip</compression_lib> <use_lua>0</use_lua> </backend_options> </cache>
Nella versione Magento Enterprise è possibile utilizzare Redis come backend della FPC, con ottimi risultati.
Una volta configurato Redis non ci resta che svuotare completamente la cache di Magento cancellando la cartella var/cache o direttamente da Magento con il comando:
Per verificare che Redis stia funzionando correttamente possiamo connetterci al database eseguendo il comando:
redis-cli
Una volta connessi alla console di Redis verifichiamo che i dati siano effettivamente storati con i comandi:
keys sess* (se sono presenti chiavi le sessioni sono correttamente storate) keys * (se sono presenti chiavi la cache è correttamente storata)
Dai nostri test l’utilizzo di Redis porta ad un incremento delle performance, se avete la possibilità di installare Redis e avete sufficienti risorse sul vostro server consigliamo di utilizzare questa configurazione.
Articoli correlati:
2 risposte
Nel codice suggerito il tag non si chiude, va chiuso prima di immagino
Grazie della precisazione Corrado, ho corretto la configurazione aggiungendo il tag di chiusura.