我几乎不了解redis,除了它是内存和快速。 但我有一个案例我考虑使用它。
我有一个系统,可能拥有大量用户(500k +可能高达数百万),我想对所有用户的电子邮件地址进行独特检查。我考虑使用redis来维护一组所有电子邮件地址以进行单一检查。所以我问自己,是否有可能做类似
的事情if(!set.contains(email)) add email
作为一个原子操作,然后得到一个我能处理的简单结果,就像失败或成功一样。
此代码/命令应该可以从并发代码中调用。
如果有更好的工具可以更好地满足我的需求,我愿意接受建议。
答案 0 :(得分:4)
使用SET
数据类型:
Redis Sets是一个无序集合的字符串。可以在 O(1)中添加,删除和测试成员的存在(无论集合中包含的元素数量是多少,都是恒定时间)。
Redis集具有不允许重复成员的理想属性。多次添加相同的元素将导致集合具有此元素的单个副本。 实际上,这意味着添加成员不需要检查是否存在然后添加操作。
所以只需使用
SADD emails my@email.com