在我的应用程序中,我将用户存储为user:n
,其中n是唯一ID。
创建新用户时,我会增加user_count
等全局变量,并将该ID用作user:n
。
但是,我有一个问题,我需要确保电子邮件尚未使用。我已经做了一些阅读,我唯一能看到如何做到这一点的方法是:
1)循环用户。但是,我并不热衷于这个解决方案,因为它可能导致性能降低吗?
2)创建一个包含所用电子邮件地址列表的查找。
当我来自SQL背景时,这两个解决方案对我来说都有点奇怪。
这些是唯一可用的选项吗?我也必须对用户名进行相同的检查。
答案 0 :(得分:1)
您可以使用集合:
注册时:sadd taken_emails "john@example.com"
使用以下内容进行测试:sismember taken_emails "bob@exmaple.com"
请注意,您有一个可能的竞争条件,其中两个用户同时尝试使用同一封电子邮件,同时测试并获得“免费”,然后两者都注册。您可以使用lock来确保它们不同时获取它,或使用WATCH/MULTI/EXEC
或lua脚本使注册操作成为原子。