我正在尝试为节点应用找到最佳的缓存解决方案。有几个模块可以管理这个。最受欢迎的是:https://www.npmjs.com/package/node-cache
但是如果我将一些结果保存到变量中,我发现响应更快:
var cache = ["Kosonsoy","Pandean","Ḩadīdah","Chirilagua","Chattanooga","Hebi","Péruwelz","Pul-e Khumrī"];
然后我可以在固定的时间间隔更新该变量,这是否也被归类为缓存?此方法是否存在任何已知问题/问题。因为它可以提供最快的响应时间。
答案 0 :(得分:2)
当然,使用本地内存存储数据会更快。 对于有限的缓存大小,这很好,但可以快速耗尽所有进程内存。
我建议使用模块,因为有大量的协作智能投入其中。或者,您可以使用专用实例来运行Redis以用作缓存。
除了替代方案,如果你坚持使用你的解决方案,我建议小改进。
而不是
var cache = ["Kosonsoy","Pandean","Ḩadīdah","Chirilagua","Chattanooga","Hebi","Péruwelz","Pul-e Khumrī"];
尝试使用对象作为键值存储。
这将使搜索和更新条目更快。
var cache = {"Kosonsoy":data,"Pandean":moreData,...};
在数组中搜索需要迭代,而访问对象就像
一样简单var storedValue = cache["Kosonosoy"];
保存
cache[key] = value;
答案 1 :(得分:1)
如果你使用many workers,每个人都会有一个重复的缓存,因为它们没有共享内存。
当然,您可以将它用于小数据。将数据保存在变量中一段时间可以称为缓存。