2012-06-07 16 views
5

Estoy migrando cachés de EhCache a Memcached. Con solo 1 instancia Memcached, ¿hay alguna manera de tener múltiples cachés (como en EhCache)?Múltiples cachés en Memcached

Por ejemplo, quiero tener un caché de "Usuarios", un caché de "Productos", etc ... La razón principal para eso es poder monitorear y configurar cada caché por separado, y ser capaz de borrarlos por separado también.

+0

¿Qué cliente de memcached estás utilizando? – cheeken

+0

xmemcached (Java) –

Respuesta

4

Normalmente, este tipo de comportamiento se logra en memcached a través del espacio de nombres. Dentro de una única instancia de memcached, una mantiene múltiples espacios de nombres, cada uno de los cuales representa una memoria caché diferente. Sin embargo, memcached no admite nativamente espacios de nombres; en su lugar, los espacios de nombres memcached se emulan prefijando claves con un identificador de espacio de nombres (por ejemplo, memcachedClient.get('products.top10')). Algunos clientes memcached, como the Python GAE memcached client, resumen este comportamiento para usted. Sin embargo, xmemcached no, por lo que puedo decir.

Tienes dos opciones.

  • Prefijo manualmente cada tecla con la que trabajas.
  • Escriba una capa delgada alrededor de XMemcachedClient con dos cambios: tiene un miembro String namespace que sirve como el valor de prefijo, y reemplaza get0() para aplicar ese prefijo. Esto es un poco peligroso ya que depende de la implementación actual de XMemcached.
+0

Gracias, de hecho escribiré un servicio personalizado manejando espacios de nombres de caché alrededor de XMemcachedClient (sin anular la clase, en lugar del patrón de diseño "Fachada") –