2012-06-07 11 views
5

Ich migrieren Caches von EhCache zu Memcached. Mit nur einer Memcached-Instanz gibt es eine Möglichkeit, mehrere Caches zu haben (wie in EhCache)?Mehrere Caches in Memcached

Zum Beispiel möchte ich einen "Benutzer" -Cache, einen "Produkte" -Cache, etc ... Der Hauptgrund dafür ist in der Lage, jeden Cache separat zu überwachen und zu konfigurieren, und in der Lage, sie zu löschen auch separat.

+0

Welchen memcached Client verwenden Sie? – cheeken

+0

xmemcached (Java) –

Antwort

4

Normalerweise wird diese Art von Verhalten in Memcached über Namespacing erreicht. Innerhalb einer einzelnen Memcached-Instanz verwaltet man mehrere Namespaces, von denen jeder einen anderen Cache darstellt. Memcached unterstützt jedoch native Namespaces nicht - stattdessen werden Memcached-Namespaces durch das Voranstellen von Schlüsseln mit einem Namespace-Bezeichner (z. B. memcachedClient.get('products.top10')) emuliert. Einige memcached Clients, wie the Python GAE memcached client, abstrahieren dieses Verhalten für Sie. Allerdings, xmemcached nicht, soweit ich das beurteilen kann.

Sie haben zwei Möglichkeiten.

  • Manuelles Präfix für jede Taste, mit der Sie arbeiten.
  • Schreiben Sie einen dünnen Wrapper um XMemcachedClient mit zwei Änderungen: Es hat eine String namespace Mitglied, das als Präfixwert dient, und überschreibt get0(), um dieses Präfix anzuwenden. Dies ist ein wenig gefährlich, da es auf der aktuellen XMemcached-Implementierung beruht.
+0

Danke, ich werde tatsächlich einen benutzerdefinierten Service schreiben, der Cache-Namespaces rund um XMemcachedClient behandelt (nicht die Klasse überschreibend, sondern das "Facade" -Designmuster) –