【问题标题】:Can a fs function run quicker than one called before it?fs 函数可以比之前调用的函数运行得更快吗?
【发布时间】:2020-07-16 02:51:22
【问题描述】:

所以我正在制作一个基于文档的数据库库,我担心一些事情。 例如,当假设我几乎同时收到 2 个使用数据库的请求时,

express.post("/storeSomeText/:text", (request, response) => {
  fs.appendFile("filePath", request.params.text, () => {
    response.send("success");
  });
})

因此,如果我几乎同时收到 2 个请求,那么第二个请求处理程序是否有可能在第一个请求处理程序之前完成?

如果是这样,我该如何避免这种情况发生?

【问题讨论】:

  • 这可能会发生,您需要某种锁定/同步。一个缓慢但有效的方法是有一个事务的概念,以及每个事务的全局锁定。

标签: node.js express fs


【解决方案1】:

正如@PiRocks 建议的那样,您可以使用锁定/同步来解决这个问题。假设“filePath”作为键有一些价值,当请求开始处理时说“锁定”并在您完成处理后删除此键,我们可以使用 Redis 或一些类似的替代方案。

你可以使用setTimeout来实现重试机制。

但最好的方法是使用一些——队列系统——比如 RabbitMQ。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-16
    • 2013-05-17
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-03-26
    • 1970-01-01
    相关资源
    最近更新 更多