Javascript 在node.js中缓存数据最便宜的方法?
我正在实现一个运行匹配算法的node.js服务器。因为我想让服务器尽快响应,所以我希望能够从缓存中检索数据,而不是每次都查询数据库。例如,我需要保存10000-50000个用户的信息。我担心这会占用很多内存。有没有办法在缓存中存储这么多的数据而不冒内存不足的风险?你可以使用memcached或redis,他们自己关心内存及其缺乏,从我读到的关于你试图做什么的内容中删除了过时的数据,这似乎是自相矛盾的。至于我的看法,使用缓存有以下目标:Javascript 在node.js中缓存数据最便宜的方法?,javascript,node.js,caching,Javascript,Node.js,Caching,我正在实现一个运行匹配算法的node.js服务器。因为我想让服务器尽快响应,所以我希望能够从缓存中检索数据,而不是每次都查询数据库。例如,我需要保存10000-50000个用户的信息。我担心这会占用很多内存。有没有办法在缓存中存储这么多的数据而不冒内存不足的风险?你可以使用memcached或redis,他们自己关心内存及其缺乏,从我读到的关于你试图做什么的内容中删除了过时的数据,这似乎是自相矛盾的。至于我的看法,使用缓存有以下目标: 将预处理的数据保存在内存中,这样就不必执行逻辑来再次生成它们
kapil节点memchache比redis更快,更易于实现。你可以看到 使用Node.js可以相当轻松地缓存数据库查询中的数据 下面是一个缓存MySQL查询的示例:
const Mcache = require('mcache');
const garbageCollectionInSeconds = 10;
const timeToLiveInSeconds = 60;
// This function will be called to update the cache
const update = function (id, callback) {
mysql.query('SELECT ... WHERE id=?', id, callback);
};
const cache = new Mcache(timeToLiveInSeconds, garbageCollectionInSeconds, update);
const id = 'some-entity-id';
cache.get(id, function (error, data) {
if (error) {
console.error(error.message);
} else {
console.log(`Result: ${data}`);
}
});
我的目标是你所说的第二个目标。但为什么看起来矛盾呢?感谢您的帮助。我说这似乎是矛盾的,因为您似乎将数据保留在缓存中,这是一种比DB更好的性能替代方法,但您也担心RAM被耗尽,从而导致应用程序出现问题。因此产生了矛盾——“希望采用更快的方法,即基于RAM的数据,但不想耗尽RAM”。即使你去使用memcache或redis,你仍然需要RAM或选择磁盘交换,但如果你真的想要速度,请调整数据大小,并拥有足够的RAM来满足需要。你是对的。我的意思是,我正在努力理解什么是最好的折衷方案。在这种情况下,ok是有意义的——你应该将LRU作为一种策略来考虑你想要做什么。像redis这样的组件可能会对您想要做的事情造成过度的杀伤力。所以我可以在执行开始时将我经常使用的数据加载到redis中?是否有一个规模超过这个规模,使用Redis就没有意义了?Redis是一个独立于您的程序工作的独立服务。它能够存储指定时间的数据。如果数据量很大,可以在不同的计算机之间分配负载