LOMPO Samboal, SOME Sebastien, YO Bienvenu
20 juin 2024
Les bases de données Key-Value sont l’un des types de bases de données NoSQL les plus simples et les plus performants. Elles sont conçues pour stocker, récupérer et gérer des paires de clés et de valeurs, ce qui les rend idéales pour de nombreux cas d’utilisation nécessitant des performances élevées et une grande flexibilité.
1. Structures
2. Fonctionnement
Les opérations de base sur les bases de données Key-Value incluent :
Ces opérations sont généralement très rapides, car elles se basent sur des structures de données comme les tables de hachage, qui permettent un accès quasi-constant au temps pour les opérations de lecture et d’écriture.
3. Avantages
4. Cas d’Utilisation
1. Définition
Redis (Remote Dictionary Server) est un système de gestion de données open source écrit en C, conçu pour stocker, récupérer et manipuler différents types de données.
Il s’agit d’une base de données NoSQL de type paire clé/valeur. Redis peut être configurée pour stocker des données sur disque, cependant, il est principalement utilisé pour la gestion de données en mémoire vive.
Redis est utilisée en production dans des secteurs tels que les jeux vidéo, la publicité, les services financiers, la santé et l’IoT.
2. Historique
Créée en 2009 par Salvatore Sanfilippo, Redis est devenue l’une des bases de données NoSQL les plus populaires. Nommé base de données la plus aimée par les développeurs pendant 5 années d’affilées d’après le sondage annuel « Stackoverflow Developer Survey »
Redis est actuellement utilisé par de nombreuses compagnies comme Twitter, GitHub ou Snapchat. Découvrez tout ce que vous devez savoir sur cette base de données en mémoire rapide.
3. Fonctionnement
Les structures de données (data structure) de Redis supportent nativement différents types de valeurs:
4. Quelques fonctionnalités
Le fonctionnement de cette diffusion est simple. Les messages envoyés par les expéditeurs (publishers) ne sont pas directement envoyés à des destinataires spécifiques (subscribers) mais passent dans des canaux (channels). Seuls les abonnés du canal en question reçoivent le message qui est envoyé « au plus, une fois » (at-most-once).
Telegram Newsletters
4. Quelques fonctionnalités
L’application va alors stocker la réponse aux requêtes les plus courantes directement dans sa mémoire de l’application et les réutiliser ultérieurement, sans avoir à recontacter la base de données.
La plus part des navigateurs
1. Installation
2. Manipulations
2. Manipulations
- Créer des entrées
-1. Chaînes
2. Manipulations
- Créer des entrées
-1. Chaînes
2. Manipulations
-2. Listes
Les personnes travaillant avec cette base de données apprécient notamment les listes et les sets. Dans les deux cas, il s’agit de collections de valeurs. Alors que les sets ne sont pas triés, les valeurs des listes sont numérotées. Dans les listes, il est possible d’ajouter, de consulter et de supprimer des entrées.
Ajout (lpush)
2. Manipulations
-2. Listes
# 127.0.0.1:6397> linsert mylist before "bar" "test"
# (integer) 3
# 127.0.0.1:6397> lrange mylist 0 10
# 1) "foo"
# 2) "test"
# 3) "bar"2. Manipulations
-3. Sets
2. Manipulations
-4. Hash
Le type de données hash constitue un cas particulier. De façon similaire aux sets et aux listes, il s’agit d’éléments individuels pouvant comporter plusieurs valeurs. Cependant, il existe également une clé pour chaque valeur créant ainsi des paires clé-valeur.
2. Manipulations
-4. Hash
# 127.0.0.1:6397> hgetall user1
# 1) "name"
# 2) "bob"
# 3) "email"
# 4) "bob@example.com"
# 5) "password"
# 6) "rK87_x"2. Manipulations
-4. Hash
# > hdel user1 password
# (integer) 1
# 127.0.0.1:6397> hgetall user1
# 1) "name"
# 2) "bob"
# 3) "email"
# 4) "bob@example.com"2. Manipulations
-5. Autres commandes
# 127.0.0.1:6397> set foo 100
# OK
# 127.0.0.1:6397> rename foo bar
# OK
# 127.0.0.1:6397> get foo
# (nil)
# 127.0.0.1:6397> get bar
# "100"# 127.0.0.1:6397> set foo "Hello"
# OK
# 127.0.0.1:6397> append foo " World"
# (integer) 11
# 127.0.0.1:6397> get foo
# "Hello World"# 127.0.0.1:6397> set foo 1
# OK
# 127.0.0.1:6397> get foo
# "1"
# 127.0.0.1:6397> incr foo
# (integer) 2
# 127.0.0.1:6397> get foo
# "2"