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.