Se você usar o BLPOP sozinho para remover uma mensagem da fila e seu consumidor de mensagem não conseguir processá-la, a mensagem terá que ser enfileirada novamente, para que não desapareça para sempre junto com o consumidor com falha.
Para um processamento de mensagens mais durável, uma lista de mensagens processadas deve ser mantida para que possam ser reenfileiradas em caso de falha.
[B]RPOPLPUSH é perfeito para este cenário; ele pode remover atomicamente uma mensagem da fila de mensagens e enviá-la por push para uma fila de processamento para que o aplicativo possa responder no caso de uma falha do lado do consumidor.
http://redis.io/commands/rpoplpush
O reenfileiramento real é deixado para o aplicativo, mas esse comando redis fornece as bases para isso.
Existem também algumas implementações drop-in-place de filas usando redis flutuando pela web, como RestMQ [ http://www.restmq.com/ ]