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