仅当元素不存在时,才会更新原子更新

时间:2016-01-12 08:05:40

标签: redis

我几乎不了解redis,除了它是内存和快速。 但我有一个案例我考虑使用它。

我有一个系统,可能拥有大量用户(500k +可能高达数百万),我想对所有用户的电子邮件地址进行独特检查。我考虑使用redis来维护一组所有电子邮件地址以进行单一检查。所以我问自己,是否有可能做类似

的事情
if(!set.contains(email)) add email

作为一个原子操作,然后得到一个我能处理的简单结果,就像失败或成功一样。

此代码/命令应该可以从并发代码中调用。

如果有更好的工具可以更好地满足我的需求,我愿意接受建议。

1 个答案:

答案 0 :(得分:4)

使用SET数据类型:

  

Redis Sets是一个无序集合的字符串。可以在 O(1)中添加,删除和测试成员的存在(无论集合中包含的元素数量是多少,都是恒定时间)。

     

Redis集具有不允许重复成员的理想属性。多次添加相同的元素将导致集合具有此元素的单个副本。 实际上,这意味着添加成员不需要检查是否存在然后添加操作

所以只需使用

SADD emails my@email.com