Gestion des Transactions, des Verrous et des Commandes dans Redis

Introduction aux Transactions

Les transactions dans Redis diffèrent de celles des bases de données relationnelles. Dans les systèmes comme MySQL, une transaction respecte les propriétés ACID : Atomicité, Cohérence, Isolation et Durabilité. De plus, MySQL utilise un contrôle de concurrence multi-version (MVCC) pour gérer ces propriétés.

Dans Redis, une transaction regroupe des commandes dans une file d'attente sans exécution immédiate. Si une commande échoue, la file est annulée, mais aucune opération n'est réellement effectuée, contrairement à un rollback traditionnel. Les commandes clés sont : MULTI pour démarrer, EXEC pour exécuter, et DISCARD pour annuler la file.

Aspect MySQL Redis
Début START TRANSACTION MULTI
Commandes SQL standard Commandes Redis
Échec ROLLBACK DISCARD (annulation sans exécution)
Réussite COMMIT EXEC

Commandes associées aux transactions :

  • DISCARD : annule la file et abandonne toutes les commandes.
  • EXEC : exécute les commandes dans la file.
  • MULTI : marquee le début d'une file transactionnelle.
  • UNWATCH : annule la surveillance des clés.
  • WATCH key [key ...] : surveille les clés ; si elles sont modifiées avant EXEC, la transaction est interrompue.

Test de Transaction


# Connexion à Redis
redis-cli
# Authentification
AUTH motdepasse
# Créer une clé hors transaction
SET utilisateur "Alice"
GET utilisateur
# Démarrer une transaction
MULTI
SET produit "livre"
SET categorie "roman"
# Vérifier depuis une autre session (résultat nil)
GET produit
# Exécuter la transaction
EXEC
# Vérifier le résultat
GET produit
GET categorie

Verrou Optimiste dans Redis

Un verrou optimiste suppose peu de conflits et surveille les modifications des clés. Par exemple, pour réserver une salle : la clé salle_reservee initialement à 1 passe à 0 lors de la réservation. Si plusieurs sessions tentent de modifier cette clé simultanément, seule la première exécution réussit.

Implémentation avec Surveillance


# Fenêtre 1 : Surveiller la clé et démarrer une transaction
WATCH salle_reservee
MULTI
SET salle_reservee 0

# Fenêtre 2 : Surveillance et transaction similaires
WATCH salle_reservee
MULTI
SET salle_reservee 0

# Exécuter d'abord dans Fenêtre 2
EXEC
# Puis dans Fenêtre 1 : échec renvoyant (nil)
EXEC

Commandes d'Administration

INFO

Fournit des informations détaillées sur le serveur Redis, les clients, la mémoire, la persistance, les statistiques, la réplication, l'utilisation CPU, le clustering et l'espace des clés.


# Informations globales
INFO
# Section spécifique (ex. CPU)
INFO cpu

CLIENT

Gère les connexions clients.


# Lister les connexions actives
CLIENT LIST
# Terminer une connexion spécifique
CLIENT KILL ip:port

CONFIG

Permet de gérer les paramètres de configuration.


# Réinitialiser les statistiques
CONFIG RESETSTAT
# Afficher toutes les configurations
CONFIG GET *
# Modifier une configuration dynamiquement
CONFIG SET maxmemory 50G
# Vérifier la modification
CONFIG GET maxmemory

DBSIZE

Affiche le nombre de clés dans la base courante.


DBSIZE
KEYS *

SELECT

Redis offre 16 bases de données isolées (0 à 15). Utilisez SELECT pour changer de base.


# Créer une clé dans la base 0
SET cle "valeur"
# Changer vers la base 1
SELECT 1
# Vérifier l'isolation
KEYS *

FLUSHDB et FLUSHALL

Commandes pour supprimer les données :

  • FLUSHDB : supprime toutes les clés de la base courante.
  • FLUSHALL : supprime les clés de toutes les bases.

# Suppression de la base courante
FLUSHDB
# Suppression globale
FLUSHALL

MONITOR

Permet de surveiller en temps réel les commandes exécutées sur le serveur.


# Démarrer la surveillance
MONITOR
# Dans une autre session, exécuter des commandes pour les voir apparaître

SHUTDOWN

Arrête le serveur Redis.


SHUTDOWN

Étiquettes: Redis transactions Verrous Optimistes Commandes Administration base de données

Publié le 14 juin à 01h42