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