跨节点服务器上的多个 API 请求维护数据
Maintaining data across multiple API requests on node server
这是我正在处理的问题。
客户端需要使用 API 轮询节点服务器以获取某些数据。为了使节点服务器响应,它需要一个数据集(从数据库中读取)。我想避免在每次投票中读取数据库。如何在多个投票中维护数据集?
如果这是可能的,它是否会对服务器性能产生任何影响。
数据库查询减少始终是一个复杂的问题。 我的解决方案是使数据库查询成为承诺并将其缓存直到过期。
例如:
var cache = {};
var cachedQuery = function(id) {
if(id in cache) return cache[id];
return cache[id] = new Promise(function(resolve, reject) {
db.query('select * from test where id=?', id, function(err, rows) {
delete cache[id];
if(err) reject(err);
else resolve(rows);
}
});
}
假设您同时有 100+ 个查询共享相同的请求 ID,这些查询将共享相同的数据库请求。请求在第一个查询到来时建立,查询完成后所有查询将返回相同的结果。
对于更通用的用法,您可以使用 lru-cache 来存储创建的承诺,为其提供到期时间。
您可以使用内存中缓存。这个想法是,在访问数据库之前,请检查缓存中是否存在请求的值。如果是 - 服务它。如果没有 - 从数据库中获取,保存到缓存并返回它。
从内存中服务是您可以获得的最快服务。现有的节点解决方案,如节点缓存。
相关文章:
- 跨节点服务器上的多个 API 请求维护数据
- 在 Google 云端硬盘 API 请求中使用参数
- Angularjs的异步API请求
- 如何将头添加到ActiveResource以创建API请求
- Flux+Rreact.js-缓存API请求响应
- JavaScript中的Google Drive API请求
- API请求在使用phonegap调试时不工作,但在模拟器中工作,为什么
- 使用Jquery将JSON API请求的元素传递给数组
- 如何将访问令牌用于Facebook Opengraph javascript SDK api请求
- 从多个API请求推送到全局数组
- 确定 API 请求的来源
- 如何将 API 请求中的 JSON 获取到页面的 javascript 中
- 跟踪 Google 可视化 API 请求中的事件
- 为什么此 Google 日历 API 请求不返回开始时间等事件数据
- 取消以前由 ng-change 创建的 api 请求
- 来自 HTML/js 项目中的 .dll / .aspx 文件的 API 请求
- GiantBomb API 请求获取 HTML 而不是 JSON,Nodejs 请求模块
- 在 Angular JS 服务中调用 YouTube API 请求
- 如何限制 api 请求堆栈
- Javascript:具有多个查询参数的嵌套 JSON api 请求