Les transaccions en Redis permeten agrupar múltiples comandes en una sola operació atòmica. Això significa que totes les comandes dins d'una transacció es completen amb èxit o cap d'elles es completa. Les transaccions són útils per assegurar la consistència de les dades quan es realitzen múltiples operacions que depenen les unes de les altres.

Conceptes Clau

  • MULTI: Inicia una transacció.
  • EXEC: Executa totes les comandes en una transacció.
  • DISCARD: Cancel·la una transacció.
  • WATCH: Observa una o més claus per canvis, per condicionar l'execució de la transacció.

Comandes de Transaccions

MULTI

La comanda MULTI marca l'inici d'una transacció. Després d'executar MULTI, les comandes següents no s'executen immediatament, sinó que es col·loquen en una cua.

MULTI

EXEC

La comanda EXEC executa totes les comandes que s'han encolat després de MULTI. Si alguna de les claus observades amb WATCH ha canviat, la transacció es cancel·la.

EXEC

DISCARD

La comanda DISCARD cancel·la la transacció actual, esborrant totes les comandes encolades.

DISCARD

WATCH

La comanda WATCH observa una o més claus. Si alguna d'aquestes claus canvia abans de l'execució de EXEC, la transacció es cancel·la.

WATCH key1 key2

Exemple Pràctic

A continuació, es mostra un exemple pràctic d'una transacció en Redis:

WATCH balance
MULTI
DECR balance 100
INCR savings 100
EXEC

Explicació del Codi

  1. WATCH balance: Observa la clau balance per canvis.
  2. MULTI: Inicia una transacció.
  3. DECR balance 100: Decrementa el valor de balance en 100.
  4. INCR savings 100: Incrementa el valor de savings en 100.
  5. EXEC: Executa totes les comandes encolades. Si balance ha canviat des de l'execució de WATCH, la transacció es cancel·la.

Exercicis Pràctics

Exercici 1

Crea una transacció que transfereixi 50 unitats de account1 a account2. Assegura't que la transacció només es completi si account1 té almenys 50 unitats.

Solució

WATCH account1
MULTI
DECRBY account1 50
INCRBY account2 50
EXEC

Exercici 2

Implementa una transacció que només es completi si la clau inventory no ha canviat. La transacció ha de reduir inventory en 10 i augmentar sold en 10.

Solució

WATCH inventory
MULTI
DECRBY inventory 10
INCRBY sold 10
EXEC

Errors Comuns i Consells

  • No utilitzar WATCH correctament: Si no observes les claus correctes, la transacció pot fallar en mantenir la consistència de les dades.
  • Oblidar EXEC: Després de MULTI, si oblides executar EXEC, les comandes encolades no s'executaran.
  • No gestionar errors: Assegura't de gestionar els errors adequadament, especialment quan utilitzes WATCH.

Resum

Les transaccions en Redis són una eina poderosa per assegurar la consistència de les dades quan es realitzen múltiples operacions. Utilitzant MULTI, EXEC, DISCARD i WATCH, pots agrupar comandes i assegurar-te que es completen de manera atòmica. Practicar amb exemples i exercicis t'ajudarà a comprendre millor com utilitzar les transaccions en Redis de manera efectiva.

© Copyright 2024. Tots els drets reservats