如何延迟删除?

How can I delay deletion?

我想延迟从数据库中删除数据。我正在使用 MySQL、nest.js。听说CRON正是我所需要的。我想在一周内删除该条目。你能帮我吗? CRON 是我需要的,还是我需要使用其他东西?

您可以配置一个 cronjob 来定期删除它。

配置 cron 作业的方法有多种。

您可以编写一个 shell 脚本,使用 linux crontab 定期删除数据库中的实体,或者您可以配置一个提供 cronjobs 的应用程序,例如 jenkins 或 airflow。 AWS lambda 还提供了 cronjob。

使用nestjs提供的crontab貌似是最简单的解决问题了

看到这个link https://docs.nestjs.com/techniques/task-scheduling

可以创建 cron 作业(或 Windows 中的 at)或 MySQL EVENT 以定期检查某些内容并采取行动。分辨率只有1分钟。

如果您需要非常精确的分辨率,则需要另一种技术。例如,如果您不想向用户显示超过 1 周前 到第二个 的内容,则只需将其从 SELECT 中排除。那就是在 WHERE 中添加这样的内容:AND created_date >= NOW() - INTERVAL 7 DAY.

执行上述操作后,您就可以自由地安排实际的 DELETE 时间,比如说,一天一次——而不是在数据库上敲打,通常却发现无事可做。

如果您确实选择“敲打数据库”,请注意以下问题。如果删除脚本的一个实例 运行 很长一段时间(出于多种原因中的任何一个),它可能不会在下一个副本出现之前完成。在某些情况下,这些脚本会相互干扰,以至于有效地“崩溃”服务器。

这导致另一种解决方案 -- 永远运行的单个脚本。它有一个简单的循环:

  • 执行所需的操作(删除旧行)
  • 睡 1 次——或 10 次或 60 次或其他什么——这是做一个“好人”而不是“打击系统”。

唯一棘手的部分是确保在任何服务器重启或脚本崩溃后启动。