2016-01-12 58 views
1

我幾乎不知道有關redis的任何內容,除非它是內存中和快速的。 但我有一個案例,我考慮使用它。只有當元素不存在時,原子纔會更新一個redis集合

我有一個系統,可能有大量的用戶(500k +可能高達幾百萬),我想對所有用戶的電子郵件地址進行獨特的檢查。我認爲使用redis來維護一組所有電子郵件地址來執行獨特檢查。於是,我問自己,是否有可能像做

if(!set.contains(email)) add email 

做爲一個原子操作,然後得到一個簡單的結果,我可以處理,就像失敗或成功。

該代碼/命令應該可以從併發代碼中調用。

如果有一種不同的工具可以更好地滿足我的需求,我樂於接受建議。

回答

4

使用SET的數據類型爲:

Redis的設置是一個字符串無序集合。可以在O(1)(恆定時間,不管包含在集合內的元素的數量)中添加,移除和成員的存在的測試。

Redis集具有不允許重複成員的理想屬性。多次添加相同的元素將導致一個集合具有此元素的單個副本。 實際上這意味着添加一個成員不需要檢查是否存在,然後添加操作

所以只使用

SADD emails [email protected] 
相關問題