将MongoDB查询中的数据存储到对象中,每20分钟更新一次

Store data from MongoDB query into object and update every 20 minutes

本文关键字:更新 20分钟 一次 对象 查询 MongoDB 数据 存储      更新时间:2023-09-26

如果这是一个新手问题,请原谅我,因为我是一个试图学习完整堆栈的前端开发人员。

我的节点应用程序每20分钟将记录插入MongoDB。

每次用户访问页面时查询数据库似乎不合逻辑,因为数据库在 20 分钟的时间段内是相同的(直到我每 20 分钟插入一次新记录)。

我想我可以将查询结果存储在一个对象或其他东西中,并每 20 分钟更新一次这个对象(每次我插入新记录时,这是一个每 20 分钟运行一次的函数)。

我将如何做到这一点?我需要它成为全局变量吗?

这是一个好主意还是坏主意,为什么?

如果您的查询已编入索引和/或速度很快,那么访问数据库可能是要走的路。 另一种选择是具有缓存层。 如果你在原始节点中这样做.js你会给自己带来很多复杂性(以及可能的性能问题),所以我会远离它。 如果你在另一个服务(redis,memcached)中这样做,除非查询复杂或缓慢,否则你可能不会看到太多的性能提升。 如果查询很复杂,您可以每 20 分钟重新生成一次结果,并将其保存在 mongo 中的某个地方,然后从中运行查询。 前任:

setInterval(regen_stats, 20 * 60 * 1000)

最重要的是,数据库是用来查询的,所以你不必开始从它们那里拿走东西,直到它停止执行(通常是由于查询的规模或复杂性)。