Javascript 尝试使用Redis和后台任务更好地理解NodeJ
我试图在本地测试一个节点服务器,以便最终在DigitalOcean上部署它(这完全是另一回事)。目前,我已经成功地使用rest端点和自签名证书设置了本地节点服务器。我的问题是我想存储我的用户可以通过点击rest端点检索的数据。我目前的想法是,我会在服务器上运行某种后台任务,不断地获取新数据,这样当一些更流行的查询出现时,我就可以为它们提供最新的数据,经过清理,随时可以使用Javascript 尝试使用Redis和后台任务更好地理解NodeJ,javascript,node.js,redis,Javascript,Node.js,Redis,我试图在本地测试一个节点服务器,以便最终在DigitalOcean上部署它(这完全是另一回事)。目前,我已经成功地使用rest端点和自签名证书设置了本地节点服务器。我的问题是我想存储我的用户可以通过点击rest端点检索的数据。我目前的想法是,我会在服务器上运行某种后台任务,不断地获取新数据,这样当一些更流行的查询出现时,我就可以为它们提供最新的数据,经过清理,随时可以使用 我的问题是,我无法理解如何让一个后台函数运行,它会一次又一次地调用自己,而最终不会导致内存问题。我在看Bull或Kue,但我
我的问题是,我无法理解如何让一个后台函数运行,它会一次又一次地调用自己,而最终不会导致内存问题。我在看Bull或Kue,但我不确定它们是否适合我的具体需求。我以前也从未处理过NoSQL数据库,所以Redis对我来说是相当陌生的。有什么建议或建议吗?我有点不知所措,不知道从这里走到哪里,尽管我对我要做的事情有一个大致的想法。我想到了两个选择。如果您使用的是“hiredis”软件包,您可以在现代四核上实现每秒200k的查询。可以想象,您每次都可以检索最新的数据 另一个选项包括在启动时更新应用程序内存,然后每隔一段时间更新一次。对具有以下功能的函数的递归调用:
函数updateValuesFromRedis(秒){
返回redishGetAsyc('keyhash')
.然后(函数(值){
返回savevalue(值);
})
.最后(函数(){
setTimeout(函数(){
log('更新…');
updateValuesFromRedis(秒);
},1000*秒)
})
.catch(函数(错误){
console.error('从Redis更新值时出错!',错误);
});
}
(功能表){
updateValuesFromRedis(60);
})();我不明白你为什么需要后台运行任务。如果您的rest服务有一个端点来解析一个查询,这应该足够了,对吗?您将返回该查询的结果,保持数据库更新是另一个问题,它不应该由端点I处理guess@YerkoPalma我将服务器设置为在数据发送给用户之前为我清理数据。这是因为,否则,数据实际来源的端点(在我不管理的另一台服务器上)将以完整的XML格式出现,然后我的应用程序将不得不对其进行排序和清理(我不希望这样)。所以我想在服务器的时间而不是用户的时间内获取数据。酷,调度功能会在启动节点服务器的调用中出现吗?另外,为什么hiredis与ioredis或其他redis节点客户端相反?