2011-10-12 20 views
0

我需要一個應該在進程中運行的簡單(LRU)緩存。我發現memcached,這看起來不錯,但似乎並沒有一個簡單的方法來處理它的進程。我不需要分佈式緩存,只需一個簡單的鍵/值存儲和某種LRU行爲以及一些很好的分配器來限制碎片,因爲條目大小差異很大(幾個字節 - 幾千字節)。必須確保這種事情的現有實施?應該是C或C++。簡單的C/C++進程內緩存類似於memcached

+0

這可能幫助:HTTP://計算器.com/questions/6668824/caching-huge-data-in-process-memory – 2011-10-12 06:49:29

回答

3

我不喜歡這樣回答,但實現起來會相當簡單。

  1. Allocator。使用mallocfree。他們工作,他們工作得很好。這也使得與其他程序的交互更加容易。

  2. 互斥體 - >散列表,樹或特里結構。您可以使用鏈表來跟蹤LRU。不要嘗試做無花果無鎖的東西。

重量應該少於幾百行,在一個很好的日子裏敲出來。

+0

哇,我很驚訝這被接受了。我並不樂觀。 –

+0

我不相信很快會有更好的答案;是的,簡單的手寫LRU現在可以工作。儘管我仍然很好奇聽到更好的關鍵/價值商店;) – Anteru

0

我已經使用成功commoncache但該項目並沒有出現有我的同事提出的(補丁)的任何活動和問題依然沒有得到解決......