Redis rpoplpush

Redis rpoplpush
“Redis tem vários tipos de dados embutidos, e cada um é para fins diferentes. A lista é um dos tipos de dados amplamente utilizados que podem armazenar mais de 4 bilhões de strings em uma chave Redis especificada. A coisa especial da lista Redis é que ela permite a inserção e a remoção de elementos da cabeça e da cauda, ​​que têm complexidade de tempo constante. O Lpush e Rpush são usados ​​para inserir elementos de sequência perto da cabeça e cauda de uma lista. Também o LPOP e Rpop Remova os elementos da lista na cabeça e na cauda.”

O comando rpoplpush

O comando rpoplpush é usado para exibir um elemento da cauda de uma lista de origem e inseri -lo na cabeça de uma lista de destino armazenada em uma determinada chave. A remoção e a inserção nas listas de origem e destino acontecem simultaneamente.

Vamos supor que uma lista armazenada na chave A Contém as cordas "maçã", "laranja" e "banana". Além disso, outra lista armazenada na Key B tem os elementos "uvas" e "abacate". Se ligarmos para o comando rpoplpush, onde a lista A é a fonte e a lista B é o destino, ele removerá a sequência "banana" da lista A e a insira logo antes do elemento "uvas" na Lista B.

Sintaxe

O comando rpoplpush tem a seguinte sintaxe.

Rpoplpush fonte_list_key destination_list_key

Fonte_list_key: Esta é a chave Redis da lista que você precisa para remover um elemento.

destino_list_key: Esta é a chave Redis da lista que você precisa para inserir o elemento estourado.

Este comando retorna uma resposta de string que é um elemento da lista popped da lista de origem se a lista de origem estiver disponível. Quando a lista de origem não existir, o comando retornará A NIL valor. Em alguns casos, a fonte e o destino podem ser os mesmos. Portanto, ele executará a inserção e a remoção na mesma lista.

Caso de uso 01 - Implementação da fila de mensagens

As listas Redis foram usadas principalmente nas implementações de servidores de mensagens, onde os produtores produzem dados próximos à cabeça da lista, e os consumidores consomem dados da cauda da lista armazenada em uma chave especificada. Pense em uma situação em que uma falha de rede ou um problema de servidor é lançado; O consumidor pode perder os dados estourados antes do início do processamento. Pode ser uma perda que os consumidores não conseguem se recuperar em sua vida. Portanto, é necessária uma fila mais confiável. Vamos usar o comando rpoplpush para implementar uma fila de confiabilidade.

Vamos criar uma lista Lista de processos com alguns elementos, como mostrado no seguinte. O comando lpush pode ser usado para produzir alguns dados na lista especificada.

LPUSH ProcessList "P1" "P2" "P3" "P4"

O comando acima empurrará elementos perto da cabeça da lista. Portanto, os elementos serão armazenados na seguinte ordem.

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

Em seguida, estaremos usando o Rpoplpush comando como cliente para exibir o último elemento da lista de processos de lista e empurrá -lo para uma nova lista armazenada na chave Confiabilidade.

RPOPLPUSH LISTLIST REPLIABILIDADE

Idealmente, o elemento "P1" deve ser retirado da lista de origem, e a string "P1" deve ser a saída deste comando. Ao mesmo tempo, esse elemento é empurrado para a lista armazenada na chave Confiabilidade. Vamos inspecioná -lo usando o LRange comando.

LRANGE RELABIABILIDADE 0 5

Saída:

Nós estaremos chamando o LRange comando na lista Lista de processos também.

Listrange ProcessList 0 5

Saída:

Como esperado, o elemento "P1" é removido da lista de origem. O Rpoplpush Recomenda -se o comando usar com filas de confiabilidade.

Caso de uso 02 - Implementação de nós de trabalhador confiáveis ​​para processar aplicativos individuais

Como mencionado, a fonte e o destino podem ser os mesmos para o comando rpoplpush. Nesse caso, a inserção e remoção são realizadas na mesma lista. Isso pode ser útil ao implementar um sistema de monitoramento para processar centenas de aplicativos de entrevista para um determinado trabalho.

Vários trabalhadores e itera sobre a lista até que todos os aplicativos tenham sido processados. A melhor coisa desse tipo de fila circular é que ela não perderá nenhuma aplicação devido a que o item é reinserido na mesma lista e eventualmente recebido por um dos trabalhadores da próxima iteração.

Vamos criar uma nova lista, JobApplicationList.

LPUSH JobApplicationList CV1 CV3 CV7 CV10

A lista deve parecer o seguinte.

"CV10" | "CV7" | "CV3" | "CV1"

Agora vamos chamar o comando rpoplpush com a mesma lista que os argumentos de origem e destino mostrados no seguinte.

rpoplpush JobApplicationList JobApplicationList

Como esperado, o elemento da cauda "CV1" foi removido e devolvido pelo comando.

Podemos inspecionar o JobApplicationList Liste novamente para verificar se o elemento "CV1" foi inserido perto da cabeça da mesma lista.

lRange JobApplicationList 0 5

Como você pode ver, o elemento "CV1" foi inserido na cabeça da lista armazenada na chave JobApplicationList. A lista circular pode ser usada como uma maneira confiável de implementar sistemas de monitoramento como este.

Conclusão

Para resumir, o comando rpoplpush é um dos comandos amplamente utilizados que foram usados ​​para executar a remoção e a inserção de listas simultaneamente. Como você sabe, este comando aceita listas de origem e destino como argumentos. O elemento da cauda da lista de origem será estourado e inserido perto da cabeça da lista de destino armazenada em uma chave especificada. Conforme discutido, o comando rpoplpush é usado para implementar filas confiáveis ​​em sistemas de mensagens e também em sistemas de monitoramento em que vários nós do trabalhador funcionam na lista fornecida de elementos paralelos de maneira confiável com a recuperação perdida equipada. Este comando está depreciado da versão 6 Redis.2.0 e encorajado a usar o lmove comando com o CERTO e ESQUERDA argumentos.