Redis VS Memcached


Technique

Définition

Redis et Memcached sont des systèmes de cache performant permettant de stocker pour un temps définissable des données sur la mémoire vive (RAM). Les données qui sont stockées, sous un format de type clé-valeur, peuvent être de type string, array, object et peuvent provenir d’une base de donnée. Étant enregistrée dans la mémoire vive, la taille des données stockées est assez limité, aussi faudra-t-il bien veiller à faire attention à ce que l’on veut mettre en cache.

Ces technologies permettent de renvoyer directement une donnée à l’utilisateur sans avoir besoin de questionner la base de donnée, ce qui permet d’alléger la charge du serveur en limitant efficacement les nombres de requêtes envoyées à la base de donnée. En limitant la charge sur les serveurs on peut ainsi réduire leur nombre et de ce fait réduire nos dépenses.

Utilisation

L’installation de Redis et de Memcached peuvent se faire de différentes manières, et diffère également selon les plateformes de travail. Cette problématique nous a poussé à faire l’impasse sur ce vaste sujet. Néanmoins, vous trouverez facilement des documentations sur la manière de le faire sur votre moteur de recherche habituel.

Passons donc à leur utilisation sur du code PHP.
Memcached
Site officiel : https://memcached.org/
Manuel PHP : https://php.net/manual/fr/book.memcached.php
Voici comment mettre en place son memcached dans du code PHP
< ?php
$memcached = new Memcached();
$memcached->addServer(‘localhost’, 11211);
$value = ‘test’;
$memcached->set(‘key’, $value , 120);
echo $memcached->get(‘key’);
?>
Explication :
On crée tout d’abord une instance de l’objet Memcached, puis on se connecte au serveur ( ici localhost avec pour port 11211 ). On enregistre ensuite une valeur « $value » dans la clé « key » pour un temps d’expiration de 120 secondes. On affiche enfin la valeur contenu dans « key » pour s’assurer que le système fonctionne parfaitement

Redis
Site officiel : https://redis.io/
Voici comment mettre en place son redis dans du code PHP
<?php
$redis = new Redis();
$redis->connect(‘localhost’, 6379);
$value = ‘test’;
$redis->set(‘key’, $value );
echo $redis->get(‘key’);
?>
Explication :
On crée tout d’abord une instance de l’objet Redis, puis on se connecte au serveur ( ici localhost avec pour port 6379 ). On enregistre ensuite une valeur « $value » dans la clé « key ». On affiche enfin la valeur contenu dans « key » pour s’assurer que le système fonctionne parfaitement.

Benchmark

Voici un benchmark de Redis et Memcached, montrant leur vitesse d’exécution en écriture et en lecture ( seul ou en simultané )

ecriture seul1 Redis VS Memcached

lecture seul1 Redis VS Memcached

ecriture simultanee1 Redis VS Memcached

lecture simultanee1 Redis VS Memcached

Ce que l’on peut tirer en première conclusion, c’est que, d’après ce petit benchmark, la vitesse d’exécution de memcached est superieure à Redis.

Fonctionnalités

Memcached est un pur système de cache et ne propose que peu de fonctionnalités contrairement à Redis. Voici une petite liste des fonctionnalités qui différencie Redis de Memcached :

  • La persistance des données : Redis enregistre les données sur le disque dur ( en cas de panne ou autres, les données ne sont pas perdues )
  • La replication des données
  • L’énumeration des clés
  • La sécurité : un système d’authentification ( login/mdp )
  • Les structures de données supportés : Redis suport les hashes, lists, sets, sorted sets …

Que peut on en conclure ?

Parler d’optimisation, de vitesse d’exécution de site, passe forcement par un système de cache : Memcached et Redis sont 2 solutions efficaces dans ce domaine. Le premier propose des performances ( de rapidité ) nettement plus puissante, alors que le second propose beaucoup de fonctionnalités en plus du cache. Le choix de l’ un ou de l’autre dépendra donc du besoin que l’on a : Memcached pour des données peu sensible, où l’on privilégie le temps d’exécution; Redis pour ses fonctionnalités tel que la persistance, la réplication et la sécurité. On pourrait aussi penser à coupler ces deux systèmes, afin de tirer au mieux les avantages de l’un et de l’autre.

 

Chez DISKO, nous prenons toujours le temps de comparer les solutions que nous mettons en place pour nos différents clients, afin de leur proposer celle que nous pensons être la plus adaptée. Qui plus est, nous mettons systématiquement en place des dispositifs de cache sur les projets de nos clients à fort trafic, toujours en vue d’une expérience utilisateur efficace.

Laisser un commentaire