Redis BRPOP

Redis BRPOP
L'elenco è un popolare tipo di dati Redis che memorizza una sequenza di stringhe in base all'ordine di inserimento. Un elenco può contenere più di 4 miliardi di elementi. Il fatto unico sull'elenco di Redis è che mantiene le proprietà della testa e della coda in cui gli elementi possono essere inseriti da entrambi i lati. Di solito, il Lpush E Rpush I comandi vengono utilizzati per inserire gli elementi in un elenco. Nel frattempo, l'elenco nuovo di zecca viene creato con la chiave specificata. Tutti i comandi dell'elenco si comportano allo stesso modo in cui un nuovo elenco viene creato quando è passato con una chiave inesistente.


Inoltre, quando tutti gli elementi vengono visualizzati dall'elenco, la chiave associata verrà eliminata dallo spazio della chiave Redis. L'elenco Redis è il candidato ideale per le applicazioni a bassa latenza perché le operazioni di inserimento e eliminazione hanno una costante complessità del tempo TESTA E CODA. Non importa se cinque o mila elementi sono nell'elenco. Il tempo per l'inserimento e la cancellazione richiede un tempo costante vicino alle estremità sinistro e destro.

Ci sono alcune esigenze pratiche per rimuovere gli elementi dalla coda o dalla testa di un determinato elenco. IL BRPOP E Blpop I comandi vengono introdotti dalla versione 2 Redis.0.0 Per soddisfare il requisito menzionato. IL BRPOP Il comando è valutato in questa guida.

Il comando BRPOP

IL BRPOP è la versione avanzata del RPOP comando. IL RPOP Il comando fa scoppiare un elemento dalla coda dell'elenco che viene archiviato con una determinata chiave. Come suggerisce il nome, il comando BRPOP è la versione bloccante dell'RPOP. Quando la chiave non esiste, il comando BRPOP non tornerà con il zero valore immediatamente come nel comando RPOP. Invece, aspetta fino a quando un nuovo elenco non viene creato su quella chiave. Dopo la creazione di un nuovo elenco nella chiave menzionata, il comando BRPOP fa scoppiare l'elemento di coda. Inoltre, questo comando accetta le chiavi multiple e fa solo scoppiare gli elementi dalla prima chiave non vuota.

Sintassi:

Quanto segue è la sintassi per il comando BRPOP:

Brpop list_key [list_key ...] timeout


list_key: Questa è la chiave dell'elenco.
tempo scaduto: Questo è il valore di timeout in secondi in cui il client viene bloccato fino a quando questo timeout raggiunge.

Di solito, il comando BRPOP restituisce un output di array:

Se viene specificato un elenco non vuoto, il comando restituisce il valore dell'elemento scoppiato e la chiave dell'elenco contenente come nel seguente formato:

1) "Carlist"
2) "Benz"

Quando non deve essere visualizzato alcun singolo elemento da nessuno degli elenchi specificati e il timeout è scaduto, il zero il valore viene restituito.

(zero)
(10.46s)

Esempio: manipolazione della playlist della stazione radio con BRPOP

Supponiamo che una stazione radio debba suonare canzoni di una playlist quotidiana. La playlist contiene gli ID della canzone da suonare. Le canzoni dovrebbero essere ordinate nell'ordine di inserimento. Ogni canzone viene scelta dalla fine della playlist per suonare.

Possiamo utilizzare la struttura dei dati dell'elenco Redis per implementare la playlist menzionata e le operazioni di elenco per manipolare le canzoni di playlist. Creiamo una playlist chiamata Midnightplaylist e aggiungere alcuni ID brani come mostrato nel seguente. IL Lpush Il comando è usato per questo:

Lpush Midnightplaylist Song001 Song004 Song010 Song100 Song101


Ciò creerebbe un elenco come mostrato nel seguente:

Head -> Song101 | Song100 | Song010 | Song004 | Song001 <- tail


Comportamento non bloccante del comando BRPOP

Ora è il momento di iniziare uno spettacolo. Dovremmo scegliere alcune canzoni dalla fine della playlist. Quindi, Song001 dovrebbe essere rimosso dalla playlist e deve essere suonato dal registratore. Usiamo il comando BRPOP per far scoppiare il Song001 dalla playlist e per ottenere l'ID della canzone all'ascoltatore client.

BRPOP Midnightplaylist 5


L'argomento del timeout è specificato come cinque secondi. Dal Midnightplaylist contiene elementi, il BRPOP Il comando si comporta in modo non bloccante. Quindi, si aprirà e restituisce l'elemento di coda al client.

Blocco del comportamento del comando BRPOP

I risultati precedenti possono essere ottenuti anche attraverso il comando RPOP. Quindi, esaminiamo il vero vantaggio del comando BRPOP con il comportamento di blocco. Rimuoviamo tutti gli elementi dal Midnightplaylist Tasto usando il comando RPOP.

RPOP Midnightplaylist 4


Questo rimuove tutti gli elementi rimanenti dall'elenco e il Midnightplaylist La chiave viene eliminata anche dallo spazio della chiave Redis.

Eseguiamo il comando BRPOP con timeout di 60 secondi e la chiave inesistente Midnightplaylist. Ora, il comando si comporta in modo bloccante. Aspetta la creazione della chiave e l'elemento sia presente nella playlist Midnightplaylist.


Spingiamo un elemento a Midnightplaylist tramite un'altra finestra terminale collegata allo stesso Redis Data Store.

Lpush MidnightplayList Song400


Sulla creazione del Midnightplaylist Elenco con l'elemento Song400, La finestra client che ha eseguito il comando BRPOP aumenta l'elemento Song400 dalla playlist e restituisce l'ID della canzone come output all'istante.


Scegli una canzone da più playlist

Possono esserci più playlist create dalla stazione radio. Quindi, dovremmo scegliere una canzone dalle playlist indicate in un determinato momento. Supponiamo di avere tre playlist: Midnightplaylist1, Midnightplaylist2, E Midnightplaylist3. Il midnightplaylist1 è già vuoto mentre le altre due playlist non sono vuote.

Lpush MidnightPlayList2 Song1002 Song1005
Lpush MidnightPlayList3 Song3000


Chiamiamo il comando BRPOP con tutte e tre le chiavi mostrate nel seguente:

BRPOP MidnightPlayList1 MidnightPlayList2 MidnightPlayList3 10 10


Dalla prima chiave Midnightplaylist1 è vuoto, è ignorato dal comando qui. Controlla la prima chiave non vuota dall'elenco delle chiavi disponibile. Quindi, il comando individua il Midnightplaylist2 come la prima chiave non vuota dall'ordine delle chiavi. Come previsto, il Song1002 viene rimosso da Midnightplaylist2.


Il comando BRPOP ha una complessità temporale costante vicino alla testa e alla coda quando viene specificata una singola chiave. La complessità del tempo diventa O (n) quando sono specificate più chiavi nel comando. Inoltre, questo comando è molto efficiente da utilizzare nelle applicazioni a bassa latenza come una coda, uno stack, una sequenza temporale nei social media, ecc.

Conclusione

Per riassumere, un elenco di Redis è una raccolta di elementi di stringa memorizzati con una determinata chiave mentre ordinata nell'ordine di inserimento. Sono disponibili diversi comandi per operare negli elenchi di Redis con costante complessità del tempo vicino alla testa e alla coda. Come affermato, il comando BRPOP viene utilizzato per rimuovere gli elementi dal lato destro dell'elenco Redis memorizzato con una determinata chiave con il supporto del blocco. Il comando BRPOP blocca la connessione client quando non sono disponibili elementi da rimuovere dagli elenchi specificati. Come sapete, questo comando accetta più chiavi in ​​cui un elemento si verifica dal primo elenco non vuoto in cui ciascuna chiave viene controllata nell'ordine in cui vengono passate al comando.