我正在将缓存从 EhCache 迁移到 Memcached。只有 1 个 Memcached 实例,有没有办法拥有多个缓存(如在 EhCache 中)?
例如,我想要一个“用户”缓存、一个“产品”缓存等......主要是为了能够单独监控和配置每个缓存,并且能够单独清除它们。
通常,这种行为是通过命名空间在 memcached 中实现的。在单个 memcached 实例中,维护多个命名空间,每个命名空间代表不同的缓存。然而,memcached 本身并不支持命名空间——相反,memcached 命名空间是通过在键前面加上命名空间标识符(例如,memcachedClient.get('products.top10')
)来模拟的。一些 memcached 客户端,例如Python GAE memcached 客户端,为您抽象了这种行为。但是,据我所知,xmemcached 没有。
你有两个选择。
XMemcachedClient
带有两个更改的瘦包装器:它有一个String namespace
用作前缀值的成员,并且它覆盖get0()
以应用该前缀。这有点危险,因为它依赖于当前的 XMemcached 实现。