2012-07-24 21 views
0

node LRU cache是什么?任何人都可以解释如何实现它?假设我有三层,client-midlayer(句柄调用)-backend(mongoDB),LRU缓存应该在中间层实现。什么是node-lru-cache?

会不错,有一个简单的例子,只是显示它是如何工作的!提前致谢。

+7

LRU缓存只是一个具有固定最大大小的集合,它使用某种方法在插入数据时删除最近最少使用的项目,一旦达到最大大小。尽管如此,我不明白对你的其余问题重要的是什么。这只是一个容器;它不是缓存服务。 – Joe 2012-07-24 11:56:07

回答

1

有关于如何将源代码库中使用它的一个例子:https://github.com/isaacs/node-lru-cache/tree/master/test

我假设你想要的LRU坚持到MongoDB的?如果是这样的话,您需要扩展或重写库,因为它初看起来就像是一个简单的内存中LRU缓存模块。

+0

是的,你的假设是正确的。我的问题是将我的mongoDB的五个最新数据保存在一个位于中间层的容器中,LRU可以完成我想要的工作?但我不知道这是否是最好的方法。 – nihulus 2012-07-24 17:38:13

+0

@nihulus你将不得不自己编写代码,或者想办法在缓存未命中事件上扩展这个LRU库,但是我没有看到这个LRU模块支持。 – EhevuTov 2012-07-24 17:44:36

0

您还需要考虑Redis为此设置的排序集。如果您有多个前端服务器实例,则每个服务器保留一个LRU实例会导致它们不同步。 Redis的排序集非常适合这个问题,速度非常快。

您可以使用时间戳使它们按最近排序,并且可以通过事务以原子方式读取和更新列表。它绝对适合缓存的目的。

+0

这就是我最初的解决方案:)我正在考虑更复杂的事情。 – nihulus 2012-07-25 06:30:47

+0

@nihulus看看https://github.com/mcollina/redis-command-cache。这是一个结合了lru-cache和redis的模块。您可以通过redis pubsub发送缓存失效消息。 – mikegradek 2014-08-04 04:26:22

相关问题