Redis rpoplpush

Redis rpoplpush
“Redis ha diversi tipi di dati integrati e ognuno è per scopi diversi. L'elenco è uno dei tipi di dati ampiamente utilizzati che può archiviare più di 4 miliardi di stringhe con una chiave Redis specificata. La cosa speciale dell'elenco Redis è che consente l'inserimento e la rimozione di elementi sia dalla testa che dalla coda, che ha una costante complessità del tempo. IL Lpush E Rpush vengono utilizzati per inserire elementi di stringa vicino alla testa e alla coda di un elenco. Anche il LPOP E RPOP Rimuovere gli elementi di elenco sulla testa e sulla coda."

Il comando rpoplpush

Il comando rpoplpush viene utilizzato per far scoppiare un elemento dalla coda di un elenco di origine e inserirlo alla testa di un elenco di destinazione memorizzato con una determinata chiave. Sia la rimozione che l'inserimento nelle liste di origine e di destinazione si verificano contemporaneamente.

Supponiamo che un elenco archiviato alla chiave UN Contiene le corde "Apple", "Orange" e "Banana". Inoltre, un altro elenco memorizzato da Key B ha gli elementi "uva" e "avocado". Se chiamiamo il comando rpoplpush in cui l'elenco A è la sorgente e l'elenco B è la destinazione, rimuoverà la stringa "banana" dall'elenco A e lo inserisce appena prima dell'elemento "uva" nell'elenco B.

Sintassi

Il comando rpoplpush ha la seguente sintassi.

RPOPLPUSH Source_List_Key Destination_List_Key

Source_list_key: Questa è la chiave Redis dell'elenco di cui è necessario rimuovere un elemento.

destinazione_list_key: Questa è la chiave Redis dell'elenco di cui è necessario inserire l'elemento scoppiato.

Questo comando restituisce una risposta di stringa che è un elemento elenco poppato dall'elenco di origine se è disponibile l'elenco di origine. Quando l'elenco di origine non esiste, il comando tornerà un zero valore. In alcuni casi, l'origine e la destinazione possono essere le stesse. Quindi, eseguirà sia l'inserimento che la rimozione nello stesso elenco.

Caso di utilizzo 01 - Implementazione della coda di messaggistica

Gli elenchi di Redis sono stati utilizzati principalmente nelle implementazioni del server di messaggistica in cui i produttori producono dati vicino alla testa dell'elenco e i consumatori consumano dati dalla coda dell'elenco memorizzato in una chiave specificata. Pensa a una situazione in cui viene lanciato un errore di rete o un problema del server; Il consumatore potrebbe perdere i dati scoppiati prima dell'inizio dell'elaborazione. Potrebbe essere una perdita che i consumatori non possono recuperare nella loro vita. Quindi è necessaria una coda più affidabile. Facciamo uso del comando rpoplpush per implementare una coda di affidabilità.

Creiamo un elenco Elist di processo con alcuni elementi, come mostrato di seguito. Il comando LPUSH può essere utilizzato per produrre alcuni dati nell'elenco specificato.

LPUSH Processlist "p1" "p2" "p3" "p4"

Il comando sopra spingerà gli elementi vicino alla testa dell'elenco. Quindi, gli elementi saranno archiviati nel seguente ordine.

"P4" | "P3" | "P2" | "P1"

Successivamente, useremo il Rpoplpush comanda come client per far scoppiare l'ultimo elemento del processo di elenco e spingerlo in un nuovo elenco memorizzato nella chiave Affidabilità.

RPOPLPUSH ProcessList Affidabilità

Idealmente, l'elemento "P1" deve essere visualizzato dall'elenco di origine e la stringa "P1" dovrebbe essere l'output di questo comando. Allo stesso tempo, questo elemento viene spinto nell'elenco memorizzato alla chiave Affidabilità. Ispezioniamolo usando il LRANGE comando.

LRANGE ASSPLETTABILYQUEUE 0 5

Produzione:

Chiameremo il LRANGE comando nell'elenco Elist di processo anche.

Lrange Processlist 0 5

Produzione:

Come previsto, l'elemento "P1" viene rimosso dall'elenco di origine. IL Rpoplpush Si consiglia di utilizzare il comando con code di affidabilità.

Caso di utilizzo 02 - Implementazione di nodi di lavoro affidabili per elaborare le singole applicazioni

Come accennato, l'origine e la destinazione possono essere le stesse per il comando rpoplpush. In questo caso, l'inserimento e la rimozione vengono eseguiti nella stessa lista. Ciò può essere utile quando si implementa un sistema di monitoraggio per elaborare centinaia di applicazioni di intervista per un determinato lavoro.

Più lavoratori e iterano nell'elenco fino a quando tutte le applicazioni non sono state elaborate. La cosa migliore di questo tipo di coda circolare è che non perderà alcuna applicazione a causa del fatto che l'articolo viene reinserito nello stesso elenco e alla fine ricevuto da uno dei lavoratori nella prossima iterazione.

Creiamo un nuovo elenco, JobApplicationList.

Lpush JobApplicationList CV1 CV3 CV7 CV10

L'elenco dovrebbe apparire come quanto segue.

"CV10" | "Cv7" | "CV3" | "CV1"

Ora chiamiamo il comando rpoplpush con lo stesso elenco degli argomenti di origine e destinazione mostrati nei seguenti.

RPOPLPUSH JobApplicationList Elist

Come previsto, l'elemento di coda "CV1" è stato rimosso e restituito dal comando.

Possiamo ispezionare il JobApplicationList Elenco di nuovo per verificare se l'elemento "CV1" è stato inserito vicino alla testa dello stesso elenco.

lRange JobApplicationList 0 5

Come puoi vedere, l'elemento "CV1" è stato inserito dalla testa dell'elenco immagazzinato alla chiave JobApplicationList. L'elenco circolare può essere utilizzato come un modo affidabile per implementare sistemi di monitoraggio come questo.

Conclusione

Per riassumere, il comando rpoplpush è uno dei comandi ampiamente usati che è stato utilizzato per eseguire sia la rimozione che l'inserimento di elenchi contemporaneamente. Come sapete, questo comando accetta elenchi di origine e di destinazione come argomenti. L'elemento di coda dell'elenco di origine verrà visualizzato e inserito vicino alla testa dell'elenco di destinazione memorizzato con una chiave specificata. Come discusso, il comando RPOPLPUSH viene utilizzato per implementare code affidabili nei sistemi di messaggistica e anche nei sistemi di monitoraggio in cui più nodi lavoratori lavorano nell'elenco indicato di elementi paralleli in modo affidabile con il recupero smarrito equipaggiato. Questo comando è deprecato dalla versione 6 di Redis.2.0 e incoraggiato a usare il lmove comando con il GIUSTO E SINISTRA argomenti.