Présentation sur les Bases de données key-value

Plan de présentation

LOMPO Samboal, SOME Sebastien, YO Bienvenu

20 juin 2024

Plan de présentation

  1. Introduction
  2. Definition
  3. Structures et fonctionnement
  4. Logiciel de réalisation : Redis
  5. Présentation de Redis
  6. Cas pratique

Introduction

Definition

Definition

Definition

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é.

Structures et fonctionnement

1. Structures

Structures et fonctionnement

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.

Structures et fonctionnement

3. Avantages

Structures et fonctionnement

4. Cas d’Utilisation

Logiciel de réalisation : Redis

Logiciel de réalisation : Redis

1. Définition

Logiciel de réalisation : Redis

2. Historique

Logiciel de réalisation : Redis

3. Fonctionnement

Les structures de données (data structure) de Redis supportent nativement différents types de valeurs:

Logiciel de réalisation : Redis

Logiciel de réalisation : Redis

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

Logiciel de réalisation : Redis

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

Cas pratique

1. Installation

Cas pratique

2. Manipulations

# redis-cli
# 127.0.0.1:6397> ping
# PONG

Cas pratique

2. Manipulations

- Créer des entrées

-1. Chaînes

# 127.0.0.1:6397> set foo "bar"
# 127.0.0.1:6397> set value 1
# 127.0.0.1:6397> get foo
# "bar"
# 127.0.0.1:6397> get value
# "1"

Cas pratique

2. Manipulations

- Créer des entrées

-1. Chaînes

# 127.0.0.1:6397> del foo
# (integer) 1
# 127.0.0.1:6397> get foo
# (nil)
# 127.0.0.1:6397> mset foo1 "bar1" foo2 "bar2" foo3  "bar3"
# OK
# 127.0.0.1:6397> mget foo1 foo2 foo3
# 1) "bar1"
# 2) "bar2"
# 3) "bar3"

Cas pratique

2. Manipulations

-2. Listes

# 127.0.0.1:6397> lpush mylist foo
# (integer) 1
# 127.0.0.1:6397> lpush mylist bar
# (integer) 2
# 127.0.0.1:6397> lrange mylist 0 10
# 1) "foo"
# 2) "bar"

Cas pratique

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"
# 127.0.0.1:6397> lrem mylist 0 foo
# (integer) 1
# 127.0.0.1:6397> lrange mylist 0 10
# 1) "test"
# 2) "bar"

Cas pratique

2. Manipulations

-3. Sets

# 127.0.0.1:6397> sadd myset "foo"
# (integer) 1
# 127.0.0.1:6397> sadd myset "bar"
# (integer) 1
# 127.0.0.1:6397> smembers myset
# 1) "bar"
# 2) "foo"
# 127.0.0.1:6397> srem myset "bar"
# (integer) 1
# 127.0.0.1:6397> smembers myset
# 1) "foo"

Cas pratique

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.

# 127.0.0.1:6397> hset user1 name "bob" email "bob@example.com" password "rK87_x"
# OK
# 127.0.0.1:6397> hget user1 name
# 1) "bob"

Cas pratique

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"
# 127.0.0.1:6397> hvals user1
# 1) "bob"
# 2) "bob@example.com"
# 3) "rK87_x"

Cas pratique

2. Manipulations

-4. Hash

# 127.0.0.1:6397> hkeys user1
# 1) "name"
# 2) "email"
# 3) "password"
# > hdel user1 password
# (integer) 1
# 127.0.0.1:6397> hgetall user1
# 1) "name"
# 2) "bob"
# 3) "email"
# 4) "bob@example.com"
# 127.0.0.1:6397> del user1
# (integer) 1
# 127.0.0.1:6397> hgetall user1
# (empty list or set)

Cas pratique

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"