gpt4 book ai didi

c# - 构建一个 self 维护的集合,在项目过期时将其删除?

转载 作者:太空宇宙 更新时间:2023-11-03 22:31:39 25 4
gpt4 key购买 nike

我正在构建一个系统,使用户能够输入电话号码以添加到他们的帐户中。系统允许用户输入号码,然后将该号码添加到我的 PendingNumberManager 中,并设置到期时间。然后我们向该号码发送一条短信,并等待用户在我们的应用程序中输入他们的验证码。如果他们为其帐户和号码输入了正确的验证码,该号码将从 PendingNumberManager 中删除并添加到他们的用户帐户(并持久保存到数据库中)。

总的来说,在我开始考虑自动到期之前,该功能相对简单。我立即想到的一些选项是:

  • 永远不要删除过期的条目,除非有人试图获取它们,然后删除单个过期的条目。 (可能会导致列表随着时间的推移变得越来越满)。
  • 在每次查找时检查过期条目。 (导致每次查找的额外开销)。
  • 在另一个线程中运行某种循环,定期检查过期项目。 (可能会在不需要时消耗额外的资源)

总的来说,我对如何以最有效的方式处理这个问题有些不知所措。有没有什么设计模式或方法可以很好地解决这个问题?


我们目前有一个包含多个字段(包括 LastModifiedVerified 字段)的 UserPhoneNumber 表。在我们的系统中,我们有多个不同的数据源,可以将数据转储到 UserPhoneNumber 表中。该系统目前包含添加和验证电话号码的必要功能,以后可以手动验证通过我们的各种数据源添加的号码。

在注册流程中,我们希望让用户能够输入并验证给定的号码,而不是将该号码保存到 UserPhoneNumber,除非它先被验证。如果用户在验证号码之前放弃初始帐户设置/注册,他们将被迫稍后再次返回该流程,因此我们无需保留基于注册的未验证号码。

最佳答案

这听起来确实像是“验证联系人数据”模式。但是 session 系统也共享基本原理。您会在互联网上看到这些内容。

由于涉及相当长的到期时间,这是我肯定会在数据库方面解决的问题 - 而不是程序方面。面对这个问题时,我的解决方案是制作一个存储的 Prodedure taht 通过两项工作获取 ID:

  1. 删除所有超时内容
  2. 尝试检查这个数字是否还在表中

如果成功,当然我也将其从表中删除。

这样,该列表将快速 self 清理任何失败的尝试,并且您永远不会遇到数字保持有效的问题。这个小开销是可以接受的,考虑到这个函数每次注册只会被调用 1 到 5 次。这不是数据库或程序的高流量区域。

关于c# - 构建一个 self 维护的集合,在项目过期时将其删除?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57333482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com