临时用户帐户:MongoDB与Redis

时间:2018-02-10 22:23:32

标签: node.js mongodb redis

我正在使用NodeJS,ExpressJS和MongoDB开发应用程序。目前我正在进行用户注册流程。我想将用户帐户临时存储,直到用户验证了他的电子邮件地址,如果电子邮件地址未在一定时间内得到验证,我想删除临时帐户。

目前我已经遵循两个想法来解决这个问题:

  • 创建mongoose TempUserModel(除了UserModel),即如果用户进行注册,将创建临时用户,一旦用户验证了他的电子邮件地址,临时用户帐户将被复制到真实用户帐户用户收藏。一些cronjobs可以设置为在一定时间后删除未验证的用户帐户(可能有更好的解决方案让mongodb记录到期)

  • 设置redis以存储临时用户帐户数据,一旦验证了电子邮件地址,就会在mongodb中创建一个新用户。使用此解决方案,可以设置过期日期,以便在一定时间后删除未经过验证的帐户。

在Redis或MongoDB中存储临时用户帐户是否更好?

1 个答案:

答案 0 :(得分:2)

我建议在MongoDB中存储临时用户帐户。将它们存储在MongoDB中比Redis有三个优点:

  1. 如果您将一个临时用户存储在MongoDB中,那么一旦验证完成后,非常就很容易将它们转换为真实用户。实际上,您甚至可以让临时用户和经过验证的用户共享相同的架构,该架构中的.toFormat('png')字段是两种用户之间的唯一区别。将has_verified更改为true比将数据从Redis保存到Mongo容易得多。
  2. 如果您还没有计划为项目创建Redis数据库,则只需维护MongoDB。与维护Redis和MongoDB相比,维护MongoDB需要更少的工作量和更少的计算资源。
  3. 如果您以后对用户架构进行了更改,那么只更改一次(即MongoDB)更容易,而不是在两个地方进行更改。