Les bases de Redis

Résumé Support

Redis est un système de gestion de base de données clef-valeur hautes performances qui stocke les informations en mémoire pour un accès rapide. Il peut être utilisé pour gérer les sessions de vos utilisateurs ou le cache de votre site par exemple.

Pour intéragir avec votre base de données Redis vous pouvez utiliser l'invite de commandes redis-cli. La liste des commandes est disponible sur la documentation.

Les chaines

Les chaines de caractères sont les données de bases.

SET key "value" GET key DEL key SET compteur 2 INC compteur INCRBY compteur 10 GET compteur # 13

Expiration

Il est possible de définir le temps d'expiration d'une clef à l'aide de la commande EXPIRE.

SET key "value" TTL key # -1 EXPIRE key 120 TTL key # 120

Attention, lorsque vous redéfinissez la valeur d'une clef son TTL (time to live) repasse à -1 et la clef n'expirera plus. Donc pensez à bien redéfinir le TTL à chaque fois.

Listes

Les listes permettent de sauvegarder une liste d'éléments ordonnée

RPUSH tutoriels "Ajax" LPUSH tutoriels "Try catch" LRANGE tutoriels 0 -1 # ["Try catch", "Ajax"] LLEN tutoriels # 2

Les Sets

Les sets permettent de sauvegarder des informations de manière non ordonnées avec une notion d'unicité. Contrairement aux liste un set ne peut contenir plusieurs fois le même élément.

SADD users "Marie" SADD users "Marion" SMEMBERS users # Marie, Marion SREM users "Marie" SISMEMBER users "Marie" # 0, marie n'est plus dans le set

Il est aussi possible de créer des sets ordonnés en introduisant une notion de score.

ZADD classement 10 "John" ZADD classement 15 "Marion" ZADD classement 3 "Marie" ZRANGE classement 0 -1 # Marie, John, Marion ZRANK classement "Marion" # 2 ZREM classement "John"

Les hashs

Les hashs permettent de sauvegarder des informations plus complexes qui ont des sous propriétés :

HSET user:1 username "John" HSET user:1 age 10 HSET user:1 email "johndoe@gmail.com" # On peut simplifier HMSET user:1 username "John" age 10 email "johndoe@gmail.com" HGETALL user:1 HGET user:1 username # "John"

Pub/Sub

Redis permet de mettre en place un système de Publish-subscribe où un "publisher" va être capable d'envoyer un message qui pourra ensuite être écouté par différent "subscribers".

# Subscriber # Je m'abonne à plusieurs canaux SUBSCRIBE canal1 canal2 # Publisher # Je publie un message sur le canal souhaité PUBLISH canal1 "Salut les gens"

Ce mécanisme s'avère terriblement utile lors de la création d'une application fonctionnant en temps réel. Par contre, les données publiées dans les canaux ne sont par persistées. Une personne qui souscrit à un canal ne recevra donc pas un historique des messages envoyés.