我正在將緩存從EhCache遷移到Memcached。只有一個Memcached實例,是否有一種方法可以擁有多個緩存(如EhCache中)?Memcached中的多個緩存
例如,我想要一個「用戶」緩存,一個「產品」緩存等......主要原因是能夠分別監控和配置每個緩存,並且能夠清除它們也分開。
我正在將緩存從EhCache遷移到Memcached。只有一個Memcached實例,是否有一種方法可以擁有多個緩存(如EhCache中)?Memcached中的多個緩存
例如,我想要一個「用戶」緩存,一個「產品」緩存等......主要原因是能夠分別監控和配置每個緩存,並且能夠清除它們也分開。
通常,這種行爲是通過命名空間在memcached中實現的。在單個memcached實例中,一個維護多個名稱空間,每個名稱空間表示不同的緩存。但是,memcached本身不支持名稱空間 - 相反,memcached名稱空間是通過爲名稱空間標識符(例如memcachedClient.get('products.top10')
)加上前綴鍵來模擬的。一些memcached客戶端,如the Python GAE memcached client,爲您抽象此行爲。但是,據我所知,xmemcached沒有。
您剩下兩個選項。
XMemcachedClient
寫了一個薄包裝,其中有兩個更改:它有一個String namespace
成員充當前綴值,並且它會覆蓋get0()
以應用該前綴。這有點危險,因爲它依賴於當前的XMemcached實現。謝謝,我確實會寫一個處理XMemcachedClient周圍緩存命名空間的自定義服務(不是覆蓋類,而是「Facade」設計模式) –
您使用的是哪個memcached客戶端? – cheeken
xmemcached(Java) –