Vous êtes sur la page 1sur 30

I S GA - M ARRAKECH

Bases de données noSQL : Redis


SNINEH Sidi Mohamed

Redis is an in-memory remote database that offers high performance, replication,


and a unique data model to produce a platform for solving problems.
BD NOSQL (R EDIS)

• Introduction
• Persistance des données
• Structures de données
SNINEH Sidi Mohamed

• Utilisation de Redis
• Redis standalone
• Redis Sentinel
• Redis Cluster
• Installation du Redis
• Types de données

2
BD NOSQL (R EDIS)
Introduction et définition
• Redis signifie "Remote Dictionary Server". Serveur de dictionnaire distant
• Redis est un magasin de structure de données, orienté clé/valeur, en mémoire open
source utilisé comme :
• base de données,
• cache,
SNINEH Sidi Mohamed

• message broker,
• moteur de diffusion (streaming engine) ou traitement de flux .

3
BD NOSQL (R EDIS)
Persistance Redis
• Redis enregistre les données en mémoire par défaut (performances
optimales), avec une persistance périodique du disque en option.

• La persistance c’est l'écriture de données sur un stockage durable, tel qu'un


disque.
SNINEH Sidi Mohamed

• Redis fournit une gamme d'options de persistance :

• RDB (Redis Database) : vide périodiquement l'ensemble de données sur


le disque en effectuant des snapshots ponctuels.

• AOF (Append Only File): enregistre chaque opération d'écriture reçue


par le serveur dans un journal sur le disque.

• RDB + AOF

4
BD NOSQL (R EDIS)
Structures de données
• Redis fournit des structures de données telles que :
SNINEH Sidi Mohamed

5
BD NOSQL (R EDIS)
Structures de données

• Quelques opérations atomiques à exécuter sur les types Redis, comme :

• ajouter à une chaîne,

• incrémenter la valeur dans un hash,


SNINEH Sidi Mohamed

• pousser un élément vers une liste,

• calcul de l'intersection,

• de l'union,

• et de la différence d'ensembles .

6
BD NOSQL (R EDIS)
Introduction et définition

• Redis also includes:


• Transactions
• Pub/Sub
SNINEH Sidi Mohamed

• Lua scripting
• Keys with a limited time-to-live
• LRU eviction of keys
• Automatic failover

7
BD NOSQL (R EDIS)
Utilisation du Redis

• Qui utilise Redis ?

• Une liste d'entreprises bien connues utilise Redis :


SNINEH Sidi Mohamed

• Twitter

• GitHub

• Snapchat

• Craiglist

• StackOverflow

8
BD NOSQL (R EDIS)
Instances Redis Standalone

• C’est une solution utilisant l'architecture de déploiement de nœud Redis unique.

• Avantages Redis autonome :

• Architecture simple et classique


SNINEH Sidi Mohamed

• Déploiement et configuration faciles.

• Inconvénients de Redis autonome :

• Il n'est pas adapté aux exigences de fiabilité des données.

• Il n'y a pas de nœud de sauvegarde (esclave) pour la synchronisation des données


en temps réel

9
BD NOSQL (R EDIS)
Redis sentinelle

• Redis Sentinelle est une application distincte qui s'exécute en arrière-plan. Avec trois nœuds, vous pouvez
créer un déploiement Sentinelle entièrement fonctionnel.
• surveille les instances maître et esclave
• alerte de tout changement,
SNINEH Sidi Mohamed

• gère le basculement automatisé en cas de défaillance du maître


• Avantages de Redis Sentinelle :
• Simple à entretenir et à configurer.
• Travaille avec seule instance maître : peut survivre à la défaillance de toutes les instances esclaves.
• Plusieurs nœuds esclaves peuvent répliquer les données d'un nœud maître.
• Inconvénients de Redis Sentinelle :
• Non évolutif.
• Le nœud esclave est un gaspillage de ressources car il ne sert pas de nœud de secours.
• Redis-Sentinel doit être pris en charge par le client. Le client détient la moitié de la solution

10
BD NOSQL (R EDIS)
Cluster Redis
• Un cluster doit avoir au moins 3 nœuds maître. Redis recommandant que chaque
maître ait au moins un esclave et nécessite Redis version 3.0 ou supérieure.
• Avantages du cluster Redis :
• Divise automatiquement les données entre plusieurs nœuds.
• Fiabilité des données : les données sont automatiquement partitionnées sur de
SNINEH Sidi Mohamed

nombreux nœuds Redis.


• Évolutivité : ajout et suppression facile des nœuds dans le cluster.
• Basculement automatique en utilisant l'esclave comme copie de données de
secours.
• Inconvénients du cluster Redis :
• Le besoin d'au moins 6 nœuds - 3 maîtres et esclaves.
• Pas entièrement « haute disponibilité »: le cluster s'arrêtera si la majorité des
maîtres sont indisponibles dans le cas d'une panne plus importante.

11
BD NOSQL (R EDIS)
Choix d’une solution Redis

• De nombreux facteurs doivent être pris en compte lors de la sélection de la meilleure


solution pour les analyses de rentabilisation.

• Utilisation du Redis pour les tests, mais vous n'avez pas besoin de la haute
disponibilité ou de la fiabilité des données ====> Utiliser Redis standalone
SNINEH Sidi Mohamed

• Le besoin d'une haute disponibilité, même si elle n'est pas évolutive, et que vous avez
moins de données que de RAM sur une machine ====> Utiliser Redis Sentinelle

• Le besoin de partage de données, d'évolutivité et de basculement automatique, il


n'est pas nécessaire qu'il soit entièrement hautement disponible et vous avez plus de
données que de RAM sur un serveur ====> Utiliser Redis Cluster

12
BD NOSQL (R EDIS)
Installation du Redis
• Installer Redis
• La façon dont vous installez Redis dépend de votre système d'exploitation et si vous
souhaitez l'installer avec Redis Stack et Redis UI.
• Redis Stack a été créé pour permettre aux développeurs de créer des applications en
temps réel avec une plate-forme de données backend capable de traiter de manière fiable
les demandes en quelques millisecondes ou moins
SNINEH Sidi Mohamed

• Redis Stack prend en charge :


• Structures de données probabilistes
• Documents JSON interrogeables
• Interrogation sur les hachages et les documents JSON
• Prise en charge des données de séries chronologiques (ingestion et interrogation)
• Modèles de données graphiques avec le langage de requête Cypher

13
BD NOSQL (R EDIS)
Modèle logiques de données

• Modèle de données : Exemple : Lists Redis key


• Key
• Value
Value: Redis list
• Primitives
Head
• Strings
SNINEH Sidi Mohamed

• Containers (String) value 1


• Lists
• Sets value 2
• Sorted sets
value 3
• Hashes
• …

value n

Tail

14
BD NOSQL (R EDIS)
Keys

• Les clés Redis sont binaires : vous pouvez utiliser n'importe quelle séquence binaire comme clé.

• Quelques autres règles concernant les clés :

• Evitez les clés très longues. Par exemple, une clé de 1024 octets est une mauvaise idée non
SNINEH Sidi Mohamed

seulement en termes de mémoire, mais aussi pendant la recherche.

• Evitez les clés très courtes. Il ne sert à rien d'écrire "u1000flw" comme clé si vous pouvez
l’écrire "user:1000:followers".

• Essayez d’utiliser un schéma. Par exemple "object-type:id"

• La taille de clé maximale autorisée est de 512 Mo.

15
BD NOSQL (R EDIS)
Installation du Redis
• Installer Redis
• La façon dont vous installez Redis dépend de votre système d'exploitation.
SNINEH Sidi Mohamed

https://github.com/tporadowski/redis/releases

16
BD NOSQL (R EDIS)
Installation du Redis
SNINEH Sidi Mohamed

17
BD NOSQL (R EDIS)
Installation du Redis
SNINEH Sidi Mohamed

18
BD NOSQL (R EDIS)
Installation du Redis
SNINEH Sidi Mohamed

19
BD NOSQL (R EDIS)
Installation du Redis
SNINEH Sidi Mohamed

20
BD NOSQL (R EDIS)
Présentation des types de données Redis

• Redis est un serveur de structure de données.

• À la base, Redis fournit une collection de types de données natifs qui


vous aident à résoudre une grande variété de problèmes, de la mise
SNINEH Sidi Mohamed

en cache à la mise en file d' attente en passant par le traitement des


événements ...

• À l'aide de la CLI Redis « Redis command line interface »: apprendre


les types de données Redis de base et comment les utiliser

21
BD NOSQL (R EDIS)
Redis STRINGS

• Stocker et récupérer une chaîne


SET DEL
GET RENAME
• Cas d'utilisation : Stockage de JSON
SNINEH Sidi Mohamed

INCR FLUSHALL
INCRBY KEYS
• Implications du stockage de JSON DECR TTL
DECRBY MGET
EXPIRE MSET
• Incrémenter et décrémenter

• …

22
BD NOSQL (R EDIS)
Redis LISTS

• Ajouter et supprimer les éléments RPUSCH LINSERT


LPUSH LINDEX
SNINEH Sidi Mohamed

RPOP LPUSHX
• Afficher les n suivants éléments
LPOP RPUSHX
LRANGE SORT
• Afficher la longueur de la liste LLEN BLPOP
LSET

• …

23
BD NOSQL (R EDIS)
Redis SETS

• Utilisation

• Cet utilisateur est-il en ligne ?

• Est-ce que j’ai vu cette adresse IP au cours de la dernière heure ?


SNINEH Sidi Mohamed

• Cette URL est-elle dans « blacklist » ?


SADD SUNION
• … SMEMBERS SUNIONSTORE
SCARD SDIFF
• Opérations standards: SISMEMBER SDIFFSTORE
SINTER SREM
• Intersection SINTERSTORE SMOVE
• Union
• Différence

24
BD NOSQL (R EDIS)
Redis sub/pub

• « Message Broker » est un logiciel qui permet aux applications, aux systèmes et aux services
de communiquer entre eux et d'échanger des informations.

APP5
SNINEH Sidi Mohamed

APP1 APP3

APP2 APP4

25
BD NOSQL (R EDIS)
Redis sub/pub

• « Message Broker » est un logiciel qui permet aux applications, aux systèmes et aux services
de communiquer entre eux et d'échanger des informations.

APP5
SNINEH Sidi Mohamed

APP1 APP3

Message Broker

APP2 APP4

26
BD NOSQL (R EDIS)
Redis sub/pub

• Modèles « Message Broker »:

• Messagerie point à point

Sender Message Broker Receiver


SNINEH Sidi Mohamed

• Messagerie Publish/subscribe
Receiver 1

Sender Message Broker Receiver 2

Receiver N

27
BD NOSQL (R EDIS)
Redis sub/pub

• Exemple : diffusez les notifications.

• Besoin de publier des notifications d’un événement vers des applications distribuées.

• Les consommateurs doivent s'abonner à des sujets de manière indépendante


SNINEH Sidi Mohamed

PUBLISH
SUBSCRIBE
UNSUBSCRIBE
PSUBSCRIBE
PUNSUBSCRIBE

28
BD NOSQL (R EDIS)
Cluster Redis

• Construction d’un cluster Redis


• Le cluster Redis fournit un moyen automatique de partager
les données sur plusieurs nœuds Redis. => Ce fournit
Server 1 disponibilité pendant
Server 2 les défaillances . 3
Server Server 4
• Le cluster Redis utilise une forme de partitionnement où
chaque clé fait partie d'un emplacement de hachage.
Master 1 Master 2 Master 3 Master 4
• Il y a 16384 emplacements de hachage disponibles dans le
SNINEH Sidi Mohamed

127.0.0.1:7000 127.0.0.1:7001
cluster 127.0.0.1:7002
Redis et lors du calcul de l'emplacement, Redis 127.0.0.1:7003
utilise CRC16 de clé modulo 16384

Hash : Hash : Hash : Hash :


0 - 4095 4096 - 8191 8192 - 12287 12288 - 16383

Slave 1 Slave 2 Slave 3 Slave 4


127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007

29
BD NOSQL (R EDIS)
Cluster Redis

• Evoluer un cluster Redis en ajoutant plus de nœuds

Server 1 Server 2 Server 3 Server 4 Server 5

Master 1 Master 2 Master 3 Master 4 Master 5


SNINEH Sidi Mohamed

127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7008

Slave 1 Slave 2 Slave 3 Slave 4 Slave 5


127.0.0.1:7004 127.0.0.1:7005 127.0.0.1:7006 127.0.0.1:7007 127.0.0.1:7009

30

Vous aimerez peut-être aussi