想象一下Linux机器上某些进程的基于文件的缓存。
- 仅当源数据发生更改时,我们才进行该过程(消耗资源)。
- 每次查询结果时,我们都会检查基础数据是否已更改。
- 如果数据发生变化,我们会处理数据并保存缓存。
- 通过查询文件修改时间(源数据和缓存文件)来检查更改和缓存新鲜度(如果在上次更改之后创建)。
棘手的部分:这个过程需要一些时间——在我们处理数据时,数据可能会发生变化。将缓存的修改时间更改为其创建查询时间是否安全?
它是这样的:
- 源数据在 20:00:01 更改。
- 查询出现在 20:00:05 - 我们正在重新创建缓存。
- 20:04:15 结束。
- 保存缓存。
- 将缓存文件的修改时间更改为 20:00:05(以表明 20:00:05 之后的每次更改都不算在内)。
安全吗?对于备份、部署、源代码控制......这种解决方案在哪些情况下可能会产生问题?