使用nodejs从API调用缓存数据的正确方法

使用nodejs从API调用缓存数据的正确方法,api,node.js,caching,redis,Api,Node.js,Caching,Redis,我正在使用node.js编写一个web服务,它为一些数据调用API,但受API的限制,我每月只能调用若干次,因此我希望缓存从API检索的数据,以便可以将其与缓存的数据一起提供,并以一定的时间间隔从API重新获取数据 这是解决这个问题的好方法吗?我应该使用什么样的缓存框架?我查看了节点redis,但我认为键值存储不适合数据 谢谢 关于Redis,我不同意你的看法。Redis是一个非常强大的键值存储,可以轻松地用于您想要的内容。它的设计目的是把东西倒进去再拿出来。在您的情况下,您可以轻松缓存API响

我正在使用node.js编写一个web服务,它为一些数据调用API,但受API的限制,我每月只能调用若干次,因此我希望缓存从API检索的数据,以便可以将其与缓存的数据一起提供,并以一定的时间间隔从API重新获取数据

这是解决这个问题的好方法吗?我应该使用什么样的缓存框架?我查看了节点redis,但我认为键值存储不适合数据


谢谢

关于Redis,我不同意你的看法。Redis是一个非常强大的键值存储,可以轻松地用于您想要的内容。它的设计目的是把东西倒进去再拿出来。在您的情况下,您可以轻松缓存API响应,方法是将其保存到Redis中,并将查询作为键(如果这是您正在调用的REST API,您可以使用URL或序列化数据作为键),然后将响应缓存为字符串化的JSON对象(或者,如果您碰巧得到了XML字符串)

您还可以设置缓存数据的到期时间,该时间到期时将被清除

然后,您可以将API调用封装在一个helper函数中,该函数检查缓存,并返回值(如果存在)。如果不是,则发出API请求,将其添加到缓存中,然后返回


这可能是最简单的解决方案,似乎很好地涵盖了您的用例。

非常感谢您的回复!我不熟悉redis,因此我进行了初步评估。您所写的内容很有意义,我将在我的web服务中使用此解决方案。这也将避免在实际需要之前重新获取缓存数据,而不是像问题所建议的那样在一段时间内执行此操作。这确实是对该问题的一个很好的回答,您是否熟悉如何在node中使用此设置的某种教程或示例代码?我不想再问这个问题,我想补充的是,我有1000个json条目,其中包含8个字段,我想从API中每隔20秒缓存一次,你认为ReDIS会做得很好,尤其是考虑到JSON在ReDISI中存储的感觉是多么的老,但是好奇的是,你在HTTP调用中使用的是什么库?如果你使用优秀的超级代理库来从节点调用API,请考虑查看超级代理缓存。您可以将redis缓存直接构建到superagent查询中。免责声明:我编写了superagent缓存。