Redis - 检查电子邮件是否已被使用

时间:2016-02-04 14:28:07

标签: redis

在我的应用程序中,我将用户存储为user:n,其中n是唯一ID。

创建新用户时,我会增加user_count等全局变量,并将该ID用作user:n

但是,我有一个问题,我需要确保电子邮件尚未使用。我已经做了一些阅读,我唯一能看到如何做到这一点的方法是:

1)循环用户。但是,我并不热衷于这个解决方案,因为它可能导致性能降低吗?

2)创建一个包含所用电子邮件地址列表的查找。

当我来自SQL背景时,这两个解决方案对我来说都有点奇怪。

这些是唯一可用的选项吗?我也必须对用户名进行相同的检查。

1 个答案:

答案 0 :(得分:1)

您可以使用集合:

注册时:sadd taken_emails "john@example.com"

使用以下内容进行测试:sismember taken_emails "bob@exmaple.com"

请注意,您有一个可能的竞争条件,其中两个用户同时尝试使用同一封电子邮件,同时测试并获得“免费”,然后两者都注册。您可以使用lock来确保它们不同时获取它,或使用WATCH/MULTI/EXEC或lua脚本使注册操作成为原子。

相关问题