Estoy usando el decorador de EhCache SelfPopulatingCache
y tengo un problema cuando el caché intenta cargar una nueva entrada, pero es inexistente (es decir, no existe en la base de datos). Entonces, la memoria caché pondrá un valor de null
en la memoria caché, para desbloquear cualquier otro que ingrese la clave, pero luego la siguiente cadena hará la misma llamada a la base de datos porque recibió 'nulo' de la memoria caché. lo que significa que piensa que la entrada debe cargarse, aunque en realidad es nula porque los datos no existen en ninguna parte. Siento que estoy haciendo algo mal.Ehcache - using SelfPopulatingCache cuando los datos no están presentes
(pseudo código)
Value v = cache.get(key); // multiple threads will block here
if (v == null)
cache.put(key, getValueFromDB()); // this might put a null value
Mi solución actual es la de no poner nula, pero para poner un marcador de posición Object
y compruebe por ello.
Value v = cache.get(key);
if (v == null)
cache.put(key, getValueFromDB());
else if (v == NOENTRYOBJECT)
return null;
else
return v;
¿Pensamientos?
No tengo claro cómo se relaciona su pseudocódigo con 'SelfPopulatingCache'. ¿Cómo estás usando eso? – skaffman
caché = SelfPopulatingCache (o BlockingCache) ... pensó que era bastante claro – Gandalf