我需要一种方法,所以我将变量存储的值保存在Google appengine的数据库中24小时,然后它会自动销毁。 有没有办法,还有其他一些方法请。我需要在java中进行代码说明。 感谢
答案 0 :(得分:3)
您可以将数据存储在Google App Engine数据存储区中的实体中,并拥有一个每24小时删除一次的cron脚本。
有关数据存储的更多信息,请查看Storing data in Java,有关App Engine上的cron作业的详细信息,请查看Scheduled Tasks With Cron for Java。
答案 1 :(得分:1)
添加实体,然后立即创建一个任务计算任务,该任务将以24小时的eta执行,并使用其ID(作为TQ参数传递)删除实体。这将确保至少24小时删除。但是,如果任务队列调度程序没有立即获取eta计划任务,则您的删除可能会在24小时后发生。 (这可以通过专门用于此任务的专用,非常高速率的TQ来减轻。)非常直接的方法降级为“模糊24小时直到删除”问题 - 尽管cron工作方法也会有一些模糊性依赖关于cron的运行频率。 -stevep
re:代码示例试试文档... https://developers.google.com/appengine/docs/java/taskqueue/
答案 2 :(得分:0)
您还可以使用24小时超时将实体存储在Memcache中。这将是一个非常及时准确的删除,由内存缓存本身自动完成。如果您存储的值对于用例至关重要,则不推荐使用。检查memcache的SLA!
如果数据很关键但24h延迟的精度没有,我会将实体正常保存到数据存储区,但是时间戳(java.util.Date)字段填充了uppon实体构造。然后每小时运行一次后端任务以搜索要删除的实体。这将是消耗较少资源的变体,但如果它们是24:00:00.0000-24:59:59:9999旧(取决于您的任务运行的时间),您的实体将被删除。
要准确删除实体,您需要每分钟或每秒运行一次脚本,但如果在删除时必须更新许多索引,则可能会变得非常繁重。它可能导致其他问题,并且根据您的数据模型,您可能需要开始使用事务。