尝试使用Redis更好地理解NodeJS并使用后台任务

时间:2015-12-23 18:28:56

标签: javascript node.js redis

我试图在本地测试节点服务器,以寻找我最终想在DigitalOcean上部署的东西(这是另一个故事)。我已经成功设置了一个本地节点服务器,其中包含休息端点和自签名证书。我的问题是我想存储我的用户可以通过点击休息端点来检索的数据。我目前的想法是,我会在服务器上运行某种后台任务,不断获取新数据,这样当一些更受欢迎的查询通过时,我会获得最新的数据,清理并准备就绪。

我的问题是我无法理解我是如何运行后台功能一次又一次地调用自身而不会导致内存问题。我在看Bull或Kue,但我不确定这些是否适合我的特定需求。我之前也从未处理过NoSQL数据库,所以Redis对我来说是个新手。有什么建议或指示?我有点不知所措,不知道从哪里开始,即使我对我想要做的事情有一个大概的了解。

1 个答案:

答案 0 :(得分:0)

有两种选择。如果您正在使用" hiredis"在现代四核处理器上,您可以获得200k查询/秒。可以想象,您每次都可以检索最新鲜的数据。

另一个选项涉及在启动时更新应用程序内存,并再次定期更新。使用函数递归调用函数:



function updateValuesFromRedis(seconds) {
  return redishmgetAsyc('keyhash')
    .then(function(values) {
      return saveValues(values);
    })
    .finally(function() {
      setTimeout(function() {
        console.log('Updating...');
        updateValuesFromRedis(seconds);
      }, 1000 * seconds)
    })
    .catch(function(error) {
      console.error('Error updating values from Redis!', error);
    });
}

(function schedule() {
  updateValuesFromRedis(60);
})();