2012-06-07 25 views
5

Sto migrando le cache da EhCache a Memcached. Con solo 1 istanza Memcached, c'è un modo per avere più cache (come in EhCache)?Cache multiple in Memcached

Ad esempio, voglio avere una cache "Users", una cache "Products", ecc ... Il motivo principale per questo è poter monitorare e configurare ciascuna cache separatamente, ed essere in grado di eliminarli anche separatamente.

+0

Quale client memcached stai usando? – cheeken

+0

xmemcached (Java) –

risposta

4

In genere, questo tipo di comportamento viene raggiunto in memcached tramite namespace. All'interno di una singola istanza memcached, si gestiscono più spazi dei nomi, ognuno dei quali rappresenta una cache diversa. Tuttavia, memcached non supporta nativamente gli spazi dei nomi - invece, gli spazi dei nomi memcached vengono emulati dal prefisso delle chiavi con un identificatore di spazio dei nomi (ad es. memcachedClient.get('products.top10')). Alcuni client memcached, come the Python GAE memcached client, estrapolano questo comportamento per te. Tuttavia, xmemcached non, per quanto posso dire.

Ti restano due opzioni.

  • Inserisci manualmente ogni chiave con cui lavori.
  • Scrivere un involucro sottile intorno a XMemcachedClient con due modifiche: ha un membro String namespace che funge da valore di prefisso e sostituisce get0() per applicare tale prefisso. Questo è un po 'pericoloso in quanto si basa sull'attuale implementazione di XMemcached.
+0

Grazie, scriverò davvero un servizio personalizzato che gestisce gli spazi dei nomi di cache attorno a XMemcachedClient (non sovrascrivendo la classe, piuttosto il modello di progettazione "Facciata") –

Problemi correlati