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.