2013-02-10 9 views
9

Ho bisogno di una libreria di memorizzazione nella cache in C++ che funzioni un po 'come Guave's Loading Cache.Raccomandazione per la cache Open Source in C++

Esso dovrebbe includere i seguenti:

  • non bloccando l'accesso
  • tempo sfratto basato
  • dimensioni in base sfratto

ho guardato lo STL, Boost e cercato in giro, ma Non riesco a trovare nulla con questa funzionalità.

+0

Devo ammettere che potrebbe immediatamente pensare memcached qui, tuttavia è più adatto a più condivisione server. Non so se esiste una versione in-process. –

+0

Tutto ciò di cui hai veramente bisogno è una tabella hash e due liste doppiamente collegate per implementare una cache in modo efficiente. Vai a cercare nel tuo libro dei sistemi operativi o sul web su come implementare una cache LRU, quindi puoi estrapolare una soluzione per lo sfratto in base alle dimensioni e al tempo. – selbie

+2

@selbie, sono consapevole che potrei scrivere da solo, ma idealmente mi piacerebbe trovare una libreria matura e ben collaudata che sia stata utilizzata da molti progetti diversi e sia "indurita". – user1610694

risposta

5

Verificare POCO. Credo che il suo caching framework soddisfi le tue esigenze.

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

questo si avvicina a quello che mi serve grazie. Ho anche bisogno che sia non-bloccante, ma forse dovrò provvedere io stesso. Lascerò la domanda aperta per ora, nella speranza che possa già esistere. – user1610694