2017-02-27 63 views
0

假設您需要發送簡報。 你有一個存儲在列表或集合中的電子郵件的主列表(無論有意義)。如何使用源列表可靠地處理項目列表

List/Set 
"[email protected]" 
"[email protected]" 

您可能會使用同一個列表發送多個通訊,因此您無法修改原始主列表。

在僞代碼,我想的是這樣的:

  1. GET X元素,推到 「in_progress_123」
  2. 當消費者處理完畢(成功或失敗),推到列出 「completed_123」
  3. 繼續#1,直到列表相同
  4. ,如果我的服務器崩潰並重新啓動,它可以只是繼續回到#1

我需要一個主列表和一個「in_progress」列表,因爲可以使用相同主列表發送多個新聞簡報。

(注:我會處理固定不合格項目的情況,但現在並不重要)

這可能與Redis的?

也許我需要列表和有序集合的組合,但我不知道如何做到這一點。我喜歡RPOP​​LPUSH,但這是列表,我需要一種方法來比較列表,但這是成套的。

回答

1

比較列表是昂貴且低效的。而是考慮一個不同的工作流程,在這個工作流程中,您只需複製「主」列表並通過將其與工作人員一起清空來清空它。

+0

一個列表可能有100或25K的電子郵件。如何有效地複製列表? – Blankman

+0

複製將始終與長度成正比,但這是我知道的最快方法:https://gist.github.com/itamarhaber/d30b3c40a72a07f23c70 –

+0

00_copy_key.lua是最快的方法嗎?我沒有看到那個基準...... – Blankman