Usar Redis en Magento 1 para sesiones y cache

Usar Redis en Magento 1 para sesiones y cache

He estado configurando mi servidor y el de mis clientes con Redis y la diferencia ha sido bastante evidente,  tengo clientes con Magento 1 y Magento 2, lo que me permite estar actualizado en ambos CMS. En esta publicación veremos como implementar Redis en magento 1.

Magento es el mejor CMS para venta en linea, la razón por la que ha llegado a ser el mejor CMS de venta es porque está enfocado al 100% a la venta y esto lo ha logrado gracias a su capacidad de ampliarse y mejorarse con ayuda de aportaciones de su comunidad.

La integración con Redis no se queda a tras y magento 1 desde su versión 1.9 trae con sigo un módulo para poder hacer fácil su integración. antes de empezar con el tutorial de como configurar Redis en magento 1, puedes leer la publicación de como instalar Redis en ubuntu.

Configurar Redis en magento 1

Lo primero que haremos es activar el módulo de Redis llamado "Cm_RedisSession"que como ya mencioné anteriormente ya está instalado desde magento 1.9, para ello nos dirigimos a la ruta:


{magento root}/app/etc/modules/

y editaremos el archivo Cm_RedisSession.xml  de la siguiente forma:


<config>
  <modules>
    <Cm_RedisSession>
      <active>true</active> /* cambiamos el valor false por true */
      <codePool>community</codePool>
    </Cm_RedisSession>
  </modules>
</config>

Magento 1 puede usar Redis para manejar las sesiones de usuarios y también la cache de los archivos.

Configurar Redis en magento 1 para manejar las sesiones

para lograr esto hay qu eeditar el archivo lac al.xml ubicado en {magento root}/app/etc. xde la siguiente forma:

    <session_save>db</session_save>
        <redis_session>
            <host>127.0.0.1</host>
            <port>6379</port>
            <password></password>
            <timeout>2.5</timeout>
            <persistent>session</persistent>
            <db>3</db>
            <compression_threshold>2048</compression_threshold>
            <compression_lib>gzip</compression_lib>
            <log_level>1</log_level>
            <max_concurrency>6</max_concurrency>
            <break_after_frontend>5</break_after_frontend>
            <fail_after>10</fail_after>
            <break_after_adminhtml>30</break_after_adminhtml>
            <first_lifetime>600</first_lifetime>
            <bot_first_lifetime>60</bot_first_lifetime>
            <bot_lifetime>7200</bot_lifetime>
            <disable_locking>0</disable_locking>
            <min_lifetime>60</min_lifetime>
            <max_lifetime>2592000</max_lifetime>
        </redis_session>

Del código anterior, comentamos las lineas que le indican a magento que la sesión sea guardada en archivos, y en su lugar le indicamos que las sesiones sean guardadas en una base de datos y lo siguiente es la configuración por default de Redis, en esta configuración lo más importante es el número de la base de datos, el cual debe ser único, es decir si tienes más magentos, wordpress o apps que usen bases de datos, debes asignarle un número único a la sesión de este magento, los demás parámetros los dejamos como están ya que no es necesario editar ninguna configuración adicional, si requieres de una explicación más extensa sobre cada uno de estos parámetros puedes leer este artículo de github, pero con esta configuración ya podrás tener Redis trabajando las sesiones de Magneto.

Si quieres verificar que todo esté funcionando adecuadamente, puedes borrar el contenido de la carpeta {magento root}/var/session/ y refrescar tu sitio web desde el front end, al hacer esto veras que las sesiones ya no son guardadas en la carpeta session, si inicias una sesión en tu SSH y tecleas el siguiente comando:


redis-cli monitor

Configurar Redis en magento 1 para manejar la cache

Redis funciona a travez de bases de datos, en el caso de magento, las sesiones y la cache serán tomadas como 2 bases de datos diferentes. Para configurar la cache de magento 1 hayq ue agregar el siguiente código al archivo local.xml ubicado en {magento root}/app/etc.

<cache>
    <backend>Cm_Cache_Backend_Redis</backend>
    <backend_options>
        <server>127.0.0.1</server> 
        <port>6379</port>
        <persistent></persistent> 
        <database>2</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>  

Este código se agrego dentro de la etiqueta <global> y de la misma forma que las sesiones, lo más importante es definir el número único de la base de datos para evitar conflictos.

Lo interesante de usar Redis en magento 1 es que la configuración es muy sencilla y se realiza una sola vez, ya estando activo el módulo y la configuración correcta, podemos trabajar con nuestro magento de forma cotidiana, por ejemplo, si queremos borrar la cache, nos dirigimos a configuración > gestor de cache, liberamos la cache y automáticamente se libera la cache de Redis también, no hay que hacer más.