2013-02-10 66 views
9

我需要一个C++中的缓存库,其行为有点像Guave's加载缓存。C++中的开源缓存建议

应该包括以下内容:

  • 无阻塞访问
  • 时间的逐出
  • 基于大小驱逐

我已经看过了STL,升压和四处搜寻,但我无法找到任何与此功能。

+0

我必须承认我会立即想到memcached在这里,但它更适合多个服务器共享。我不知道是否有进程中版本。 – 2013-02-10 12:54:00

+0

您真正需要的是一个哈希表和两个双向链表来高效地实现缓存。请在您的操作系统手册或网页上查找有关如何实现LRU缓存的内容,然后您可以根据大小和时间推断出一个解决方案。 – selbie 2013-02-10 13:14:32

+2

@selbie,我知道我可以自己写这个,但理想的情况是我想找到一个成熟,经过很好测试的库,已经被许多不同的项目使用,并且正在“加强战斗力”。 – user1610694 2013-02-10 13:18:41

回答

5

结账POCO。我相信它的caching framework将满足您的需求。

ExpireLRUCache<int, string> cache(
           1024, // cacheSize 
           600000 // expiration (10 minutes) 
); 

cache.add(1, "Cached string 1"); 
cache.add(10, "Cached string 10"); 

Sleep(601000); 

Shared_ptr<string> pVal = cache.get(10); 
assert(pVal.isNull()); // the element has expired 
+1

这接近我需要感谢。我也需要它是非阻塞的,但也许我将不得不自己提供。我现在应该暂时搁置这个问题,希望它已经存在。 – user1610694 2013-02-10 20:06:50