首页 文章

redis可靠的队列模式

提问于
浏览
0

http://redis.io/commands/rpoplpush

“RPOPLPUSH(或阻塞变体的BRPOPLPUSH)提供了一种避免此问题的方法:消费者获取消息并同时将其推送到处理列表中 . 它将使用LREM命令从处理中删除消息邮件处理后列出 . “

建议使用这种可靠的队列模式 . 这里的关键是从队列中删除项目,除非进程完成 . 但我最大的困惑是为什么需要处理队列?通过仅保留一个队列可以实现相同的目标 .

1 回答

  • 1

    当您有多个任务访问队列时会出现此问题,这可能就是这种情况 . 如果将其保留在队列中,则会冒另一个任务挑选它并复制该消息 . 要解决这个问题并具有可靠性,可以使用RPOPLPUSH,它将消息从主队列中取出,将其推送到辅助队列,并为任务提供消息,以执行任务想要执行的操作 . 现在可以出现辅助任务,可以访问主队列而无需担心重复 .

    最后,当第一个任务完成时,它可以LREM并从处理队列中删除消息,从而完成其工作 . 任何任务都会重复此过程,您可以为所有任务实现单个处理队列,或为每个任务实现单独的处理队列,这取决于您的用例 .

相关问题