如何使用源列表可靠地处理项目列表

时间:2017-02-27 15:19:09

标签: redis

说你需要发一份时事通讯。 您有一个存储在列表或集合中的电子邮件的主列表(无论什么都有意义)。

List/Set
"user1@example.com"
"user2@example.com"

您可能会使用相同的列表发送多个简报,因此您无法修改原始主列表。

在伪代码中我想到了这个:

  1. 获取x个元素,按“in_progress_123”
  2. 当消费者完成处理(成功或失败)时,请按列表“completed_123”
  3. 继续#1直到列表相同
  4. 如果我的服务器崩溃并重新启动,它可以继续回到#1
  5. 我需要一个主列表和一个“in_progress”列表,因为可以使用相同的主列表发送多个简报。

    (注意:我将处理修复失败项目的情况,但现在不重要)

    这可以用redis吗?

    也许我需要列表和排序集的组合,但我无法弄清楚如何做到这一点。我喜欢RPOP​​LPUSH,但这是用于列表,我需要一种比较列表的方法,但这是集合。

1 个答案:

答案 0 :(得分:1)

比较列表既昂贵又效率低下。而是考虑一个不同的工作流程,在其中您只需复制“主”列表并通过与工作人员一起使用来清空它。