En databasetransaksjon refererer til en enkelt arbeidsenhet bestående av enkelt til flere spørsmål. I tilfeller kan en operasjon bare klassifiseres som en transaksjon hvis det er endringer i databasen.
Vi vil ikke bekymre oss for det, men vi vil lære å bruke Watch -kommandoen sammen med Redis -transaksjoner for denne.
Hva er transaksjoner?
I Redis består transaksjoner av fire hovedkommandoer: klokke, exec, kasser og multi.
Ved hjelp av kommandoene ovenfor kan du åpne en blokk og legge til flere kommandoer på en gang. Når du er fullført, kjører du kommandoene som en enkelt enhet.
For at en transaksjon skal lykkes, sikrer Redis at:
Redis opprette transaksjon
Du oppretter en transaksjonsenhet ved hjelp av multi -kommandoen. Multi -kommandoen vil returnere OK. Du kan gå foran og legge til alle transaksjonskommandoene etter den andre.
I stedet for å utføre kommandoene, vil Redis stå i kø dem i innsetting til du ringer dem.
Et eksempel er som vist nedenfor:
127.0.0.1: 6379> multi
Ok
Redis utfør transaksjonsenhet
Som nevnt vil Redis stille kommandoene i en transaksjonsenhet til du utfører dem manuelt.
Vi kan gjøre dette ved hjelp av Exec -kommandoen. Dette forteller Redis å kjøre alle de kø -kommandoene i innsatsbestillingen.
Et eksempelbruk er som vist nedenfor:
127.0.0.1: 6379> Sett NewKey "100"
I kø
127.0.0.1: 6379> incr newKey
I kø
127.0.0.1: 6379> Få NewKey
I kø
127.0.0.1: 6379>
Du vil merke at hver kommando som er utført er i kø. En kommando i kø er en kommando som er planlagt å kjøre etter at exec kalles.
For å kjøre det, ring exec som:
127.0.0.1: 6379> exec
1) Ok
2) (Heltall) 101
3) "101"
Dette skal utføre alle kommandoene og returnere de resulterende verdiene.
Redis Fjern kommandokøen
Anta at du vil rengjøre kommandokøen og skylle alle planlagte kommandoer? For det kan du bruke Discard -kommandoen som vist:
127.0.0.1: 6379> multi
Ok
127.0.0.1: 6379> Sett NewKey "100"
I kø
127.0.0.1: 6379> incr newKey
I kø
127.0.0.1: 6379> Få NewKey
I kø
127.0.0.1: 6379> Kasser
Ok
Etter å ha kjørt kassekommandoen, vil Redis returnere OK og lukke transaksjonsenheten.
Redis Watch Command
Watch-kommandoen i Redis lar deg implementere sjekk-og-sett-funksjonen. Klokkekommandoene godtar redis -nøkler som parametere og overvåker dem.
Hvis noen av de spesifiserte nøklene endres før EXEC -kommandoen blir kalt, avslutter Redis automatisk transaksjonen og returnerer et null -svar.
Ta eksemplet nedenfor:
var = få mykey
var = var + 1
Sett mykey $ var
I eksemplet over har vi en operasjon som øker verdien av en nøkkel med 1. Dette er selvfølgelig ikke noe problem hvis bare en enkelt klient utfører nevnte operasjon.
Imidlertid, hvis flere klienter prøver å utføre ovennevnte operasjon samtidig, oppstår en løpstilstand og returnerer en ugyldig verdi.
Vi kan løse dette ved å se nøkkelen som vist:
Se Mykey
var = få mykey
var = var + 1
Multi
Sett mykey $ var
Exec
Her, hvis en klient fungerer og verdien av nøkkelen endres før han utfører transaksjonen, mislykkes utførelsen.
For å fjerne alle så nøkler, bruk kommandoen Unwatch.
Konklusjon
Denne artikkelen diskutert ved hjelp av og arbeider med transaksjoner i en Redis -database. Sjekk dokumentasjonen for å oppdage mer.
Takk for at du leste!!