【问题标题】:Is saving file and modifying its modification time to the past safe in caching?在缓存中保存文件并将其修改时间修改为过去是否安全?
【发布时间】:2013-03-26 12:30:48
【问题描述】:

想象一下Linux机器上某些进程的基于文件的缓存。

  • 仅当源数据发生变化时,我们才进行处理(消耗资源)。
  • 每次查询结果时,我们都会检查基础数据是否已更改。
  • 如果数据发生变化,我们会处理数据并保存缓存。
  • 通过查询文件修改时间(源数据和缓存文件)来检查更改和缓存新鲜度(如果在上次更改之后创建)。

棘手的部分:该过程需要一些时间 - 在我们处理数据时,数据可能会发生变化。将缓存的修改时间更改为其创建查询时间是否安全?

有点像:

  1. 源数据在 20:00:01 发生更改。
  2. 查询于 20:00:05 发出 - 我们正在重新创建缓存。
  3. 于 20:04:15 完成。
  4. 保存缓存。
  5. 将缓存文件的修改时间更改为 20:00:05(以表明 20:00:05 之后的每次更改都不算在内)。

安全吗?对于备份、部署、源代码控制......这种解决方案可能会在哪些情况下产生问题?

【问题讨论】:

    标签: linux caching filemtime


    【解决方案1】:

    没有。安全的解决方案是将具有临时名称的文件写入同一目录,然后在向其写入所有数据后将其重命名

    1. 这样,您将永远不会有不完整/截断的文件
    2. 如果出现错误,原始数据仍会完好无损
    3. 对于错误处理,您只需删除临时文件

    它还解决了备份、源代码控制的所有问题:您可以让它们忽略临时文件。

    【讨论】:

      猜你喜欢
      • 2014-06-09
      • 2023-03-20
      • 2017-04-27
      • 2022-11-03
      • 1970-01-01
      • 2021-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多