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.
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.
DISCARD
La comanda DISCARD
cancel·la la transacció actual, esborrant totes les comandes encolades.
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.
Exemple Pràctic
A continuació, es mostra un exemple pràctic d'una transacció en Redis:
Explicació del Codi
- WATCH balance: Observa la clau
balance
per canvis. - MULTI: Inicia una transacció.
- DECR balance 100: Decrementa el valor de
balance
en 100. - INCR savings 100: Incrementa el valor de
savings
en 100. - EXEC: Executa totes les comandes encolades. Si
balance
ha canviat des de l'execució deWATCH
, 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ó
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ó
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 executarEXEC
, 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.
Curs de Redis
Mòdul 1: Introducció a Redis
Mòdul 2: Estructures de Dades de Redis
Mòdul 3: Comandes i Operacions de Redis
Mòdul 4: Persistència de Redis
- Instantànies (RDB)
- Fitxers Només de Afegeix (AOF)
- Configuració de la Persistència
- Còpia de Seguretat i Restauració
Mòdul 5: Seguretat de Redis
Mòdul 6: Optimització del Rendiment de Redis
Mòdul 7: Clúster i Alta Disponibilitat de Redis
Mòdul 8: Mòduls i Extensions de Redis
- Introducció als Mòduls de Redis
- Mòduls Populars de Redis
- Creant Mòduls Personalitzats
- Utilitzant Redis amb Altres Tecnologies