jeudi 5 août 2010

Redis 2.0 : Mémoire virtuelle, hash et bien plus encore

Les Release Candidate de Redis 2.0 s'enchainent depuis quelques temps, et je ne resiste pas à l'envie de vous en faire partager les alléchantes nouveautés.

Le support de la mémoire virtuelle

La version 1 de Redis nécessitait que toutes les données soient stockées en mémoire, ce qui limitait fortement la taille des datasets. La version 2.0 apporte donc le support de la "Virtual memory".
Pourquoi avoir attendu tout ce temps alors que les OS permettent déjà ce mécanisme :

  • L'OS n'a aucune connaissance des structures utilisées par redis
  • La taille d'un bloc mémoire alloué par l'OS peut être insuffisant pour stocker une valeur, qui peut donc être répartie sur plusieurs blocs mémoires non adjacents
  • La structure des données n'est pas optimisée pour un recherche en RAM
On peut donc optimiser grandement la structure des données sur le disque en connaissant la structure, redis 2 implémente donc sa propre gestion de la mémoire virtuelle :
  • L'espace de stockage est toujours divisé en pages, mais leur taille est libre
  • Toutes les clefs restent en RAM
  • Les valeurs peuvent être soient en RAM, soient sur le disque, et redis connait leur position exacte sur le disque, ce qui limite le IO
  • Redis choisit quelles valeurs sont sur le disque en fonction d'un indice = taille * derniere utilisation. Les valeurs les plus souvent utilisées, dans la mesure où elles ne sont pas trop grosses, restent en RAM.
Allez faire un tour sur le blog de Salvatore Sanfilippo pour des explications complètes.


Transactions
Redis 2.0 amène avec lui les transactions : les commandes MULTI, EXEC et DISCARD permet d'assurer l'atomicité d'une liste de commandes.

Le type hash
Redis 2.0 apporte le support du type hash qui facilite grandement le stockage d'objets. La gestion mémoire du stockage des hash est très bien optimisé, et permet donc de stocker efficacement les objets. Pour plus d'informations, consulter l'article sur le wiki de redis.

Notification
Redis 2.0 possède désormais un système de notifications interne qui permet, par exemple de supprimer automatiquement les clefs dont les valeurs deviennent "vides", cf encore une fois le blog de Salvatore Sanfilippo.

Ca promet donc d'envoyer du lourd comme on dit, je ne peut que vous inviter à tester par vous même, et, pourquoi pas, à remplacer vos serveurs memcache ;).

Aucun commentaire:

Enregistrer un commentaire