Cours: Base de données non relationnelles
2éme année Génie informatique
Travaux Pratique : Base de données orientés clé-valeur
Redis
But
Pour ce TP, on va voir la base de données Redis, la principale base de données clé valeur. La
donnée est stockée sous forme d’un couple de clé qui référence une valeur qui peut être simple
comme composé. Les commandes sont assez limitées. La base de données choisie va au-delà
du paradigme en permettent de stocker des documents JSON ou utiliser pour accélérer les
LLMs comme ChatGPT. Mais, on se tiendra au principe de base. Aussi, on verra une simple
application web basé sur cette base et son utilisation. Enfin, on verra le fonctionnement d’un
cluster. Aussi, on aura l’occasion de voir comment utiliser le protocol SSH et comment l’utiliser
pour contrôler une machine à distance, les conteneurs docker et le système compose pour les
multi-conteneurs
Partie 1: familiarisation avec les commandes de bases
Prise en main
Pour commencer, on aura besoin d’ouvrir VirtualBox et de démarrer la machine virtuelle
Debian. Ensuite, il faut lancer le terminal et tapez hostname -I et noter l’adresse ip avec
192.168.56.X . Enfin, il suffit de lier VSCode de la machine hôte à la machine virtuelle par SSH
en entrant l’adresse ip, l’utilisateur user, et le mot de passe 12345678. Maintenant, VSCode
contrôle la machine virtuelle via SSH. Ensuite, ouvrez l’onglet docker et lancez la machine
redis-stack. Il faut consulter le navigateur et tapez ‘localhost:8001‘ pour se trouver dans Redis
Insight. Cette interface est une GUI créé pour interagir avec Redis. Elle contient tous les outils
nécessaires de gestion et d’interaction avec la base de données.
Manipulation Simple
Taper les commandes suivantes :
SET USER:01 MOHAMED
GET USER:01
SET USER:02 AMINE
RENAME USER:02 USER:03
SET USER:03 ADIL
SET USER:04 AHMED
EXPIRE USER:04 20
TTL USER:04
TTL USER:03
DEL USER:01
SET COUNT:01 7
INCR COUNT:01
GET COUNT:01
INCRBY COUNT:01 7
2025 Pr Mouad RIYAD
GET COUNT:01
DECR COUNT:01
GET COUNT:01
Manipulation des listes
Créer une liste de ville et manipuler la comme suit :
LPUSH VILLE RABAT
LPUSH VILLE CASABLANCA
LPUSH VILLE SALE
LPUSH VILLE ELJADIDA
LPUSH VILLE AGADIR
LPUSH VILLE TANGER
GET VILLE
LRANGE VILLE 0 -1
LRANGE VILLE 0 5
LRANGE VILLE 0 2
LRANGE VILLE 3 5
LPOP VILLE
LRANGE VILLE 0 -1
RPOP VILLE
LRANGE VILLE 0 -1
RPUSH VILLE TETOUAN
LRANGE VILLE 0 -1
Manipulation des ensembles non ordonnées
Créer deux listes non ordonnées et appliquer les commande ensembliste comme suit :
SADD PAYS MAROC
SADD PAYS FRANCE
SADD PAYS ESPAGNE
SADD PAYS PALESTINE
SMEMBERS PAYS
SISMEMBER PAYS PALESTINE
SISMEMBER PAYS ESPAGNE
SADD PAYS2 MAROC
SADD PAYS2 JAPON
SADD PAYS2 JORDANIE
SADD PAYS2 AUSTRALIE
SMEMBERS PAYS2
SINTER PAYS PAYS2
SUNION PAYS PAYS2
SDIFF PAYS PAYS2
SREM PAYS FRANCE
2
Manipulation des ensembles ordonnées
Créer un ensemble ordonner et appliquer les commandes suivantes :
ZADD JOUEURS 50 ADIL
ZADD JOUEURS 60 SARA
ZADD JOUEURS 10 SAMIR
ZADD JOUEURS 30 FATIMA
ZRANGE JOUEURS 0 -1
ZREM JOUEURS FATIMA
ZRANGEBYSCORE JOUEURS 0 100 WITHSCORES LIMIT 0 1
Manipulation des tables de hashage
Établir une table de hachage avec les instructions suivantes
HSET USERDATA NOM ”AMINE”
HSET USERDATA PRENOM ”ALAOUI”
HSET USERDATA EMAIL ”AMINE.A@[Link]”
HGET USERDATA NOM
HGETALL USERDATA
HSET USERDATA SOLDE 200
HINCRBY USERDATA SOLDE 100
HGET USERDATA SOLDE
Partie 2: Intégration de redis dans un backend
Dans cette partie, on souhaite créer une application web qui utilise une base de données Redis
comme support de stockage. On propose de mettre en place l’application avec flask et redis-py.
Elle aura les fonctionnalités suivantes :
• L’utilisateur ouvre une page centrale qui lui donne le choix entre de s’inscrire ou de
consulter son vote.
• La page d’inscription enregistre quelques données de l’utilisateur.
• Page de renseignement prend les votes sous chaque image.
• Une page de réponse affiche les réponses déjà saisies.
• Une page additionnelle permet à l’utilisateur de consulter son vote.
• Une page de dashboard avec les résultats globaux de chaque image.
L’application est déjà écrite , mais avec des cases dédiées aux commandes Redis à remplir.
Donc le travail à faire:
• Replisser les champs avec les commandes décrites dans les commentaires.
• Tester le fonctionnement global de l’application.
• Stocker le résultat de la dashboard pour 30 secondes via le décorateur du cache.
• Consulter Redis Insight pour voir les données.
3
Partie 3: Mise en place d’un cluster
Comme étape final, on va voir comment déployer un cluster de 6 machines redis qui travaillèrent
en réseaux. Pour cela, on a écrit un fichier Docker compose qui se chargera de créer les machines,
les connecter en réseau, et lancer le processus de formation de cluster:
Docker compose
1. Consulter le fichier docker compose.
2. Identifier les différentes parties des blocs
3. Lancer le scripte avec la commande docker compose up
4. Analyser la sortie pour comprendre le processus
5. Connecter vous a une instance et lancer les commandes CLUSTER NODES et CLUSTER
INFO.
6. donnez la structure final du cluster
Utilisation du Notebook Python
1. Ouvrer le notebook python et analyser son contenu.
2. Lancer le notebook.
3. Écrivez un script qui entre 1000 entrées aléatoires avec une boucle.
4. Taper la commande [Link]() pour connaı̂tre le nombre de clé existant.
5. Comment avoir les 1000 entrées?