2012-07-24 46 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

相關問題