expireafterwrite example cache java caching guava

expireafterwrite - java cache example



Caché con guayaba (3)

La nueva biblioteca de Guava con la versión 10.0 presenta la interfaz Cache , que está diseñada especialmente para el almacenamiento en caché.

Viene con CacheBuilder , que es similar a MapMaker y todos los métodos de almacenamiento en caché de MapMaker se eliminarán en la versión 11.

Ejemplo de la documentación:

Cache<Key, Graph> graphs = CacheBuilder.newBuilder() .concurrencyLevel(4) .weakKeys() .maximumSize(10000) .expireAfterWrite(10, TimeUnit.MINUTES) .build( new CacheLoader<Key, Graph>() { public Graph load(Key key) throws AnyException { return createExpensiveGraph(key); } });

¿Qué clases de guayaba son adecuadas para el almacenamiento en caché seguro para subprocesos? Uso una clave compuesta, que se construye sobre la marcha, por lo que softKeys () no tiene sentido, ¿verdad? Vi en algún lugar ConcurentLinkedHashMap, ¿es el camino a seguir? ¿Ya está en el reciente lanzamiento? Perdón por la forma caótica de preguntar ...

Actualizar

Esta pregunta es bastante antigua y mirar a través de sus respuestas podría ser una pérdida de tiempo. Desde hace tiempo hay un CacheBuilder que es el camino a seguir.


Parece que quieres MapMaker.makeComputingMap , pero mencionas softKeys así que supongo que ya estás familiarizado con esa clase.

Tiene razón con respecto a los softKeys : no funcionará si compone las claves sobre la marcha, porque softKeys hace que el mapa use == lugar de equals para la comparación de claves. Pero debería estar bien con los softValues y la expiration , siempre que no haya un efecto secundario al recrear una entrada desalojada.


MapMaker.maximumSize() es el reemplazo a largo plazo de ConcurrentLinkedHashMap . CLHM sigue siendo el banco de pruebas para algoritmos mejorados para su posterior traslado si hay un consenso de la comunidad. Espero que v2.0 sea la última versión después de trasladar esas mejoras a MapMaker , sin embargo. El proyecto permanecerá vivo según sea necesario ya que tiene una buena base de usuarios (por ejemplo, Apache Cassandra). Estoy bastante contento de que la guayaba lo haya subsumido.