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 avantEXEC, 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