2013-02-10 33 views
9

Tôi cần thư viện lưu trong bộ nhớ đệm trong C++ hoạt động giống như Guave's Đang tải bộ nhớ cache.Đề nghị cho bộ nhớ cache nguồn mở trong C++

Nó nên bao gồm những điều sau đây:

  • non-blocking truy cập
  • thời gian dựa đuổi
  • kích thước dựa đuổi

Tôi đã nhìn vào STL, Boost và đã tìm kiếm xung quanh nhưng Tôi không thể tìm thấy bất cứ điều gì với chức năng này.

+0

Tôi phải thừa nhận rằng ngay lập tức tôi sẽ nghĩ đến memcached tại đây, tuy nhiên nó phù hợp hơn với nhiều máy chủ chia sẻ. Tôi không biết nếu có một phiên bản trong quá trình. –

+0

Tất cả những gì bạn thực sự cần là một bảng băm và hai danh sách liên kết đôi để triển khai bộ đệm hiệu quả. Tìm trong sổ hệ điều hành của bạn hoặc trên web về cách triển khai bộ nhớ cache LRU, sau đó bạn có thể ngoại suy một giải pháp để loại bỏ dựa trên kích thước và thời gian. – selbie

+2

@selbie, tôi biết rằng tôi có thể tự mình viết, nhưng lý tưởng là tôi muốn tìm một thư viện trưởng thành, được kiểm tra kỹ lưỡng đã được nhiều dự án sử dụng và là "trận chiến cứng". – user1610694

Trả lời

5

Khám phá POCO. Tôi tin rằng caching framework của nó sẽ phù hợp với nhu cầu của bạn.

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

điều này đến gần với những gì tôi cần cảm ơn. Tôi cũng cần nó để không bị chặn nhưng có lẽ tôi sẽ phải tự cung cấp. Tôi sẽ để câu hỏi mở ngay bây giờ với hy vọng rằng nó có thể tồn tại. – user1610694

Các vấn đề liên quan