0

I need a way ,so i keep value of variable store in a database of Google appengine for 24 hrs and then it is destroy automatically . Is there any way,and some other way please.i need code explanation in java. thanks

4

3 回答 3

3

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

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

于 2012-11-09T19:42:19.107 回答
1

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

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

于 2012-11-09T21:59:22.137 回答
0

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

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

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

于 2012-11-10T14:58:55.353 回答