Les bases de Redis

Voir la vidéo

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.

Publié
Technologies utilisées
Auteur :
Grafikart
Partager