BLPOPを単独で使用してキューからメッセージを削除し、メッセージコンシューマーがメッセージの処理に失敗した場合、メッセージは、失敗したコンシューマーとともに永久に消えないように、再キューイングする必要があります。
より耐久性のあるメッセージ処理を行うには、処理中のメッセージのリストを維持して、障害が発生した場合にメッセージを再キューに入れることができるようにする必要があります。
[B]RPOPLPUSHはこのシナリオに最適です。メッセージキューからメッセージをアトミックにポップして処理キューにプッシュできるため、コンシューマー側で障害が発生した場合にアプリケーションが応答できます。
http://redis.io/commands/rpoplpush
実際の再キューイングはアプリケーションに任されていますが、このredisコマンドはそのための基盤を提供します。
RestMQ [http://www.restmq.com/]
など、Web上に浮かぶredisを使用したキューのドロップインプレース実装もいくつかあります。