expireafterwrite java caching guava

java - guava expireafterwrite



usando caché de guayaba sin una función de carga (1)

Mi aplicación java tiene un caché, y me gustaría intercambiar la implementación del caché actual y reemplazarla con el caché de guayaba.

Desafortunadamente, el uso del caché de mi aplicación no parece coincidir con la forma en que funcionan los cachés de guayaba. Todo lo que quiero es poder crear una memoria caché vacía, leer un elemento de la memoria caché utilizando un método "obtener" y almacenar un elemento en la memoria caché con un método "poner". NO quiero que la llamada "get" intente agregar un elemento a la memoria caché.

Parece que la clase LoadingCache tiene los métodos de obtener y poner que necesito. Pero tengo problemas para descubrir cómo crear la memoria caché sin proporcionar una función de "carga".

Mi primer intento fue este:

LoadingCache<String, String> CACHE = CacheBuilder.newBuilder().build();

Pero eso causa este error del compilador: tipos incompatibles; no existen instancias de tipo variable (s) K1, V1, por lo que Cache se ajusta a LoadingCache

Aparentemente tengo que pasar un CacheLoader que tiene un método de "carga".

(Supongo que podría crear un CacheLoader que tiene un método de "carga" que simplemente lanza una excepción, pero parece algo extraño e ineficiente. ¿Es lo correcto?)


CacheBuilder.build() devuelve un caché sin carga. Justo lo que quieras. Solo usa

Cache<String, String> cache = CacheBuilder.newBuilder().build();