2012-06-07 85 views
5

我正在將緩存從EhCache遷移到Memcached。只有一個Memcached實例,是否有一種方法可以擁有多個緩存(如EhCache中)?Memcached中的多個緩存

例如,我想要一個「用戶」緩存,一個「產品」緩存等......主要原因是能夠分別監控和配置每個緩存,並且能夠清除它們也分開。

+0

您使用的是哪個memcached客戶端? – cheeken

+0

xmemcached(Java) –

回答

4

通常,這種行爲是通過命名空間在memcached中實現的。在單個memcached實例中,一個維護多個名稱空間,每個名稱空間表示不同的緩存。但是,memcached本身不支持名稱空間 - 相反,memcached名稱空間是通過爲名稱空間標識符(例如memcachedClient.get('products.top10'))加上前綴鍵來模擬的。一些memcached客戶端,如the Python GAE memcached client,爲您抽象此行爲。但是,據我所知,xmemcached沒有。

您剩下兩個選項。

  • 手動爲每個使用的密鑰添加前綴。
  • 圍繞XMemcachedClient寫了一個薄包裝,其中有兩個更改:它有一個String namespace成員充當前綴值,並且它會覆蓋get0()以應用該前綴。這有點危險,因爲它依賴於當前的XMemcached實現。
+0

謝謝,我確實會寫一個處理XMemcachedClient周圍緩存命名空間的自定義服務(不是覆蓋類,而是「Facade」設計模式) –