【问题标题】:store variable value for 24 hrs only仅将变量值存储 24 小时
【发布时间】:2012-10-30 03:48:59
【问题描述】:

我需要一种方法,所以我将变量存储的值保存在 Google appengine 的数据库中 24 小时,然后它会自动销毁。 有什么办法吗,还有其他方法吗。我需要java中的代码解释。 谢谢

【问题讨论】:

    标签: java google-app-engine servlets jdo


    【解决方案1】:

    您可以将数据存储在 Google App Engine Datastore 中的实体中,并拥有一个每 24 小时将其删除的 cron 脚本。

    有关数据存储的更多信息,请查看Storing data in Java,而有关 App Engine 上的 cron 作业的详细信息,请查看Scheduled Tasks With Cron for Java

    【讨论】:

      【解决方案2】:

      添加实体,然后立即创建一个任务队列任务,该任务将以 24 小时的 eta 执行并使用其 ID(作为 TQ 参数传递)删除实体。这将确保至少 24 小时才能删除。但是,如果任务队列调度程序没有立即获取 eta 调度的任务,您的删除可能会在 24 小时后发生。 (这可以通过使用专门的、非常高速率的 TQ 来缓解这个问题。)非常简单的方法被“模糊 24 小时以上直到删除”问题降级——尽管 cron 作业方法也会有一些模糊性,具体取决于关于 cron 运行的频率。 -史蒂夫

      re:代码示例尝试文档... https://developers.google.com/appengine/docs/java/taskqueue/

      【讨论】:

        【解决方案3】:

        您还可以在 Memcache 中存储 24 小时超时的实体。这将是一个非常及时准确的删除,由内存缓存本身自动完成。如果您存储的值对用例至关重要,则不推荐使用。检查内存缓存的 SLA!

        如果数据很关键,但 24 小时延迟的精度不是,我会正常将实体保存到数据存储区,但在实体构造中填充时间戳 (java.util.Date) 字段。然后每小时运行一次后端任务以搜索要删除的实体。这将是资源消耗较少的变体,但如果您的实体是 24:00:00.0000-24:59:59:9999 旧的(取决于您的任务运行的时间),您的实体将被删除。

        要精确删除实体,您需要每分钟或每秒运行一次脚本,但如果在删除时必须更新许多索引,它可能会变得非常繁重。它可能会导致其他问题,并且根据您的数据模型,您可能需要开始使用事务。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-31
          • 2016-05-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-09-12
          相关资源
          最近更新 更多