【问题标题】:What is node-lru-cache?什么是节点 lru 缓存?
【发布时间】:2012-07-24 11:50:54
【问题描述】:

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

如果有一个简单的例子来说明它是如何工作的,那就太好了!提前致谢。

【问题讨论】:

  • LRU 缓存只是一个具有固定最大大小的集合,一旦达到最大大小,它会在插入数据时使用某种方法删除最近最少使用的项目。不过,我不明白这对您的其余问题有什么影响。这只是一个容器;它不是缓存服务。

标签: javascript node.js mongodb caching express


【解决方案1】:

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

我假设您希望 LRU 持久保存到 MongoDB?如果是这种情况,您将需要扩展或重写该库,因为乍一看它就像一个简单的内存中 LRU 缓存模块。

【讨论】:

  • 是的,你的假设是正确的。我的要求是将我的 mongoDB 中的五个最新数据保存在一个位于中间层的容器中,我猜哪个 LRU 可以完成这项工作?但我不知道这是否是最好的方法。
  • @nihulus 你将不得不自己编写或想办法在缓存未命中事件上扩展这个 LRU 库,我看不出这个 LRU 模块支持。跨度>
【解决方案2】:

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

您可以使用时间戳使它们按最新排序,并且可以通过事务以原子方式读取和更新列表。它肯定会很好地满足缓存的目的。

【讨论】:

  • 这就是我最初的解决方案 :) 我在考虑更复杂的事情。
  • @nihulus 看看github.com/mcollina/redis-command-cache。它是一个结合了 lru-cache 和 redis 的模块。您可以通过 redis pubsub 发送缓存失效消息。
猜你喜欢
  • 2015-12-16
  • 1970-01-01
  • 2011-01-31
  • 1970-01-01
  • 1970-01-01
  • 2020-06-01
  • 1970-01-01
  • 2011-05-25
  • 2011-03-02
相关资源
最近更新 更多