Commerce digital

REDIS : Cache Backend et Session storage pour optimiser vos performances Magento

by L'équipe Commerce Digital 10 septembre 2015

Au sommaire :

  1. Qu’est-ce que REDIS ? Comment va-t-il rendre votre Magento performant ?
  2. Installation de Redis et du connecteur PHP
  3. Tuning de Redis pour environnement de production
  4. Paramétrage Magento pour utiliser le Cache Backend Redis
  5. Paramétrage Magento pour stocker les Sessions sous Redis

Qu’est-ce que REDIS ?

Redis est une base de données de type clés-valeurs. Ses forces sont d’être extrêmement véloce et d’offrir une grande richesse d’opérations.
Cela en fait un très bon complément à une base de données relationnelles pour venir renforcer des points précis comme le stockage du cache de Magento ! Car c’est bien d’utiliser le cache de Magento avec ou sans module complexe permettant d’étendre le cache « basique » de Magento mais encore faut-il choisir un support de stockage TRÈS rapide et le moins gourmand en ressources possible…

Voici les principaux atouts de Redis :

  • Des performances de stockage NoSQL impressionnantes (des centaines de milliers d’opérations à la seconde !) ;
  • La persistance, via des copies régulières de la mémoire (RAM) vers le disque ou écriture à chaque modification (non conseillé car ralentit les performances et pas utile vu qu’on y stocke que du cache) ;
  • Typage des valeurs, avec au choix, chaînes de caractères, listes, ensembles, ensembles triés et hashs (contrairement à Memcached par exemple – Redis power : plus besoin du slowbackend pour stocker l’association Tags<>Ids !) ;
  • Réplication de type maître/esclave ;
  • Serveur accessible par un pool de serveurs (comme Memcached) donc utilisable sur une architecture multi-serveurs
    La simplicité à l’installer le gérer, la portabilité, etc.

Chez Kaliop Digital Commerce nous utilisons Redis sur nos projets/serveurs depuis le mois d’octobre 2011 après avoir découvert ce serveur NoSQL ultra performant ; nous allons donc vous faire partager notre expérience en la matière et vous expliquer comment l’installer et paramétrer votre Magento (Community ou Enterprise – sans attendre Magento 2 !) pour qu’il l’utilise en seulement 10 minutes chrono !

Installation de Redis et du connecteur PHP

Téléchargez la dernière version stable de Redis sur le site officiel : http://redis.io/download

Ensuite décompressez et compilez Redis (nécessite le package gcc) comme suit puis lancez-le pour tester :
# cd /usr/share/ # tar xzf redis-2.4.11.tar.gz # mv redis-2.4.11 redis # cd redis # make # ./redis-server & Redis est installé.

Passons à l’installation de son connecteur avec PHP :
Téléchargez les sources de phpRedis sur https://github.com/nicolasff/phpredis puis compilez-le (nécessite la package php5-dev) :
# phpize # ./configure # make && make install

Copiez ensuite le fichier « redis.so » dans votre dossier d’extensions PHP puis éditez votre fichier de configuration PHP (généralement /etc/php5/conf.d/php.ini) afin d’ajouter cette ligne permettant de charger l’extension du connecteur PHP avec Redis : extension=redis.so

Sauvez les modifications puis redémarrez votre serveur web afin qu’il prenne en compte ces changements.
C’est tout concernant les modifications coté serveur ; attaquons-nous maintenant à la configuration de Magento pour utilisez Redis…

Tuning de Redis pour environnement de production

On a vu à l’étape précédente comment installer Redis et son connecteur PHP ; l’étape du tuning n’est pas forcement nécessaire sur un environnement de développement mais pour une utilisation en production il faut faire les choses proprement : wget -O init-deb.sh http://library.linode.com/assets/629-redis-init-deb.sh adduser –system –no-create-home –disabled-login –disabled-password –group redis mv init-deb.sh /etc/init.d/redis Editez le fichier /etc/init.d/redis en adaptant le path vers « redis-server » et son fichier de configuration « redis.conf » (/usr/share/redis dans notre cas). chmod +x /etc/init.d/redis chown -R redis:redis /usr/share/redis touch /var/log/redis.log chown redis:redis /var/log/redis.log update-rc.d -f redis defaults Allons maintenant tuner le fichier de configuration Redis /usr/share/redis/redis.conf : 1 :

Vous avez qu’un seul serveur ? On se connectera donc à Redis via son Socket afin d’outrepasser toute la couche réseau TCP/IP et ainsi gagner un peu plus en performance. Il faudra alors dans votre configuration Magento indiquer le chemin absolu vers le Socket au lieu de l’adresse IP et laisser vide le port : daemonize yes pidfile /var/run/redis.pid port 0 unixsocket /var/run/redis.sock unixsocketperm 755 timeout 2 loglevel notice logfile /var/log/redis.log syslog-enabled no databases 2 #save 900 1 #save 300 10 #save 60 10000 rdbcompression no maxclients 0 2 :

Vous utilisez plusieurs frontaux web ? On se connectera donc à Redis via son IP:PORT (comme avec Memcached) : daemonize yes pidfile /var/run/redis.pid port 6379 timeout 2 loglevel notice logfile /var/log/redis.log syslog-enabled no databases 2 #save 900 1 #save 300 10 #save 60 10000 rdbcompression no maxclients 0 Relancez Redis pour appliquer les changements de configuration : /etc/init.d/redis stop /etc/init.d/redis start

Redis is ready !

Paramétrage Magento pour utiliser le Cache Backend Redis

Rendez-vous sur le projet Github « Cm_Cache_Backend_Redis » de Colin Mollenhour (thanks !) à cette adresse : https://github.com/colinmollenhour/Cm_Cache_Backend_Redis

Téléchargez le fichier « Redis.php » permettant d’ajouter le Cache Backend « Redis » au Zend Framework puis copiez-le sur votre instance Magento dans ce répertoire : app/code/community/Cm/Cache/Backend/

Téléchargez la librairie « Credis.php » puis copiez-la sur votre instance Magento dans ce répertoire : lib/Credis/
Editez ensuite votre fichier de configuration Magento (local.xml) en ajoutant ces lignes permettant d’utiliser le nouveau Cache Backend Redis : Cm_Cache_Backend_Redis 127.0.0.1 6379 0 0 0 0 0 20480 gzip

C’est terminé côté Magento !

Connectez-vous au backoffice ; purgez le cache et ça y est vous êtes parti avec le cache backend Redis !

Vous pouvez vérifiez les logs de Redis afin de vous assurer qu’il est bien utilisé lorsque vous naviguez sur votre site Magento ; vous devriez voir ça :
[20143] 04 Oct 23:34:45 – 0 clients connected (0 slaves), 790592 bytes in use [20143] 04 Oct 23:34:49 – Accepted 127.0.0.1:35294 [20143] 04 Oct 23:34:50 – DB 0: 4 keys (0 vola&le) in 4 slots HT. [20143] 04 Oct 23:34:50 – 1 clients connected (0 slaves), 800768 bytes in use [20143] 04 Oct 23:34:50 – Client closed connec&on

Ou encore connectez-vous avec le client Redis pour afficher directement les clé qu’il stocke dans sa base : # redis-cli redis 127.0.0.1:6379> select 0 OK redis 127.0.0.1:6379[2]> KEYS * 1) « zc:k:21d_STORE_DEFAULT_CONFIG_CACHE » 2) « zc:k:21d_STORE_ADMIN_CONFIG_CACHE » 3) « zc:ti:21d_TRANSLATE » …

Paramétrage de Magento pour stocker les Session sous Redis

Rendez-vous sur le projet Github « Cm_RedisSession » à cette adresse : https://github.com/colinmollenhour/Cm_RedisSession
Téléchargez le dossier « code » permettant d’ajouter le module « RedisSession » puis copiez son contenu dans votre instance Magento ici : app/code/community/Cm/RedisSession/
Téléchargez le fichier « Cm_RedisSession.xml » permettant de déclarer le module « RedisSession » puis copiez-le sur votre instance Magento ici : app/etc/modules/ Editez ensuite votre fichier de configuration Magento en ajoutant ces lignes permettant d’utiliser le stockage des Sessions Magento sous Redis : db 127.0.0.1 6379 2.5 1 0 gzip

Attention au niveau du paramètre « db » de ne pas utiliser le même chiffre (n° de base Redis) que pour le cache backend sinon vos sessions seront purgées en même temps que le cache ce qui impactera votre frontoffice (déconnexion de vos clients / perte des paniers des « guest »).

Connectez-vous au backoffice ; purgez le cache et ça y est vous êtes parti avec les sessions Magento stockées sous Redis !
Magnifique non ? 😉

N’hésitez pas à me faire part de vos commentaires ou expériences avec Redis et Magento !
Let’s speed up your business !

Découvrez notre étude de cas Performance Magento avec Cléor et plus de détails sur notre agence certifiée Magento !

L'équipe Commerce Digital

L'équipe Commerce Digital est constituée d'experts du Commerce Digital en B2C et B2B : experts techniques, UX et Design, Chefs de projet... Chacun contribue au succès de vos projets de commerce connecté de manière pro-active et innovante.

Commentaires

Ajouter un commentaire

Votre commentaire sera modéré par nos administrateurs

Vous avez un projet ? Nos équipes répondent à vos questions

Contactez-nous