Home PHP Redis – Your advanced in-memory key-value store par Jordi Boggiano

Redis – Your advanced in-memory key-value store par Jordi Boggiano

  Antoine, Directeur Technique 5 min 29 juin 2012

 

Lors de sa conférence, Jordi Boggiano nous a présenté Redis, un « store » de type clés-valeurs mono-threadé. Ce projet open source soutenu par VMWare commence à faire des émules sur le web et de nombreux posts et articles y font référence.

Redis ressemble à Memcached : Le stockage des données se fait en mémoire afin de pouvoir obtenir des vitesses de lecture et d’écriture très rapides et ainsi de pouvoir gérer un très grand nombre d’opérations par seconde. Les opérations sont atomiques permettant d’éviter les risques de concurrence de données.

Un des inconvénients de Memcached est que les données ne sont sauvegardées qu’en mémoire : si l’instance Memcached plante, les données sont perdues. Redis répond à cette problématique en sauvegardant régulièrement les données sur le disque au moyen d’un dump régulier ou d’un journal de log, et au moyen d’options de paramétrage assez nombreuses.

Redis gère les types de données basiques de tous les langages. Il permet ainsi de gérer les valeurs de type string, integer, hash, list et set. Il est possible de donner une durée d’expiration à ces valeurs mais également de réaliser des opérations basiques sur celles-ci comme incrémenter ou décrémenter une valeur, trier un set, ajouter une valeur à une liste déjà  existante, etc…

Redis possède également une API Pub/Sub (Publish/Subscribe) permettant d’envoyer et de recevoir des messages sur des « channels ».

Afin de permettre de gérer un nombre croissant d’accès en lecture (et ainsi de garantir une montée en charge de l’application) ou bien d’obtenir une redondance des données, Redis gère l’architecture maître-esclave en garantissant une réplication rapide des données entre l’instance maître et les  instances esclaves attachées.

Redis peut donc répondre à plusieurs usages.
En tout premier lieu, il constitue une réelle alternative à Memcached afin de mettre en cache vos données grâce à une configuration plus aisée (particulièrement si vous souhaitez mutualiser le cache entre plusieurs serveurs) mais également grâce à son fonctionnement même qui vous permettra de ne pas perdre vos données en cas de redémarrage du serveur.
Redis peut également répondre à vos besoins si votre application nécessite des communications pseudo temps réel (application de chat par exemple) ou bien si elle nécessite la mise en place de queues de traitement.

De nombreux clients existent dans la plupart des langages (C, C++, C#, Java, PHP, Ruby, etc…) afin de permettre à votre application de communiquer facilement avec le serveur Redis et de tirer pleinement partie de ses possibilités.

Redis est un projet en constante évolution grâce à sa communauté active, ses performances (déjà équivalentes voire supérieures à Memcached) s’améliorent à chaque nouvelle version et de nouvelles fonctionnalités sont déjà prévues telles que le, très attendu, clustering.

A essayer de toute urgence !

 

En savoir plus :

Lire les articles similaires

Laisser un commentaire

Social Share Buttons and Icons powered by Ultimatelysocial