Magento ancora più veloce con Redis

magento e redis

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.

2 Comments
  • Corrado Pizzi

    22 Luglio 2015 at 10:18 Rispondi

    Nel codice suggerito il tag non si chiude, va chiuso prima di immagino

  • Marco Cristofanilli

    22 Luglio 2015 at 14:11 Rispondi

    Grazie della precisazione Corrado, ho corretto la configurazione aggiungendo il tag di chiusura.

Post a Comment

− 1 = 3

Accedi

Password dimenticata?