Redis Watch Command

Redis Watch Command
Se sei serio nei confronti di Redis, vorrai utilizzare le transazioni per gestire i tuoi dati. Le transazioni Redis non sono molto diverse dalle transazioni in un database relazionale.

Una transazione di database si riferisce a una singola unità di lavoro composta da domande singole a più. Nei casi, un'operazione può essere classificata come transazione solo se ci sono modifiche al database.

Non ci occuperemo di questo, ma impareremo come usare il comando di orologio insieme alle transazioni Redis per questo.

Quali sono le transazioni?

In Redis, le transazioni sono costituite da quattro comandi principali: orologio, exec, scarto e multi.

Usando i comandi sopra, è possibile aprire un blocco e aggiungere più comandi tutti in una volta. Una volta completato, si esegue i comandi come una singola unità.

Affinché una transazione abbia successo, Redis garantisce questo:

  1. Tutti i comandi specificati in un'unità di transazione sono eseguiti consecutivamente. Quindi, il primo arrivo, prima corsa.
  2. Tutti i comandi in un'unità di transazione devono eseguire correttamente. Se uno dei comandi nell'unità non riesce, anche l'intero blocco delle transazioni non riesce. Questa funzione è nota come esecuzione del comando atomico
  3. Terzo, i comandi in una transazione sono serializzati. Quindi, un client non può essere un server mentre un'unità di transazione è eseguita.

Redis Crea transazione

Si crea un'unità di transazione utilizzando il comando multi. Il comando multi tornerà ok. Puoi andare avanti e aggiungere tutti i comandi di transazione uno dopo l'altro.

Invece di eseguire i comandi, Redis li metterà in inserzione fino a quando non li chiami.

Un esempio è come mostrato di seguito:

127.0.0.1: 6379> Multi
OK

Redis Esegui unità di transazione

Come accennato, Redis metterà in fila i comandi in un'unità di transazione fino a quando non li eseguirà manualmente.

Possiamo farlo usando il comando Exec. Questo dice a Redis di eseguire tutti i comandi in coda nell'ordine di inserimento.

Un utilizzo di esempio è come mostrato di seguito:

127.0.0.1: 6379> Imposta NewKey "100"
Messo in coda
127.0.0.1: 6379> Incr NewKey
Messo in coda
127.0.0.1: 6379> Ottieni NewKey
Messo in coda
127.0.0.1: 6379>

Noterai che ogni comando eseguito viene messo in coda. Un comando in coda è un comando che è programmato per l'esecuzione dopo che viene chiamato.

Per eseguirlo, chiama il dirigente come:

127.0.0.1: 6379> Exec
1) OK
2) (intero) 101
3) "101"

Ciò dovrebbe eseguire tutti i comandi e restituire i valori risultanti.

Redis Rimuovi la coda di comando

Supponiamo di voler pulire la coda di comando e sciacquare tutti i comandi pianificati? Per questo, puoi usare il comando scarto come mostrato:

127.0.0.1: 6379> Multi
OK
127.0.0.1: 6379> Imposta NewKey "100"
Messo in coda
127.0.0.1: 6379> Incr NewKey
Messo in coda
127.0.0.1: 6379> Ottieni NewKey
Messo in coda
127.0.0.1: 6379> scartare
OK

Dopo aver eseguito il comando scarto, Redis restituirà OK e chiuderà l'unità di transazione.

Redis Watch Command

Il comando orologio in Redis consente di implementare la funzione di controllo. I comandi di orologi accettano i tasti Redis come parametri e monitorali.

Se una delle chiavi specificate viene modificata prima che venga chiamato il comando Exec, Redis termina automaticamente la transazione e restituisce una risposta nulla.

Prendi l'esempio di seguito:

var = prendi mykey
var = var + 1
Imposta mykey $ var

Nell'esempio sopra, abbiamo un'operazione che aumenta il valore di una chiave di 1. Naturalmente, questo non è un problema se solo un singolo cliente esegue la suddetta operazione.

Tuttavia, se più client tentano di eseguire contemporaneamente l'operazione di cui sopra, si verifica una condizione di gara e restituisce un valore non valido.

Possiamo risolverlo guardando la chiave come mostrato:

Guarda MyKey
var = prendi mykey
var = var + 1
Multi
Imposta mykey $ var
Exec

Qui, se un client funziona e il valore della chiave viene modificato prima di eseguire la transazione, l'esecuzione non riesce.

Per rimuovere tutte le chiavi guardarne, utilizzare il comando di disaggregazione.

Conclusione

Questo articolo ha discusso utilizzando e lavorando con le transazioni in un database Redis. Controlla la documentazione per scoprire di più.

Grazie per aver letto!!