我们正在尝试在我们的应用程序中使用 EhCache 作为分布式缓存。EhCache 实例嵌入在我们的服务器中,我们使用了一个 terracota 集群。
我们所有的服务器(和 ehcache)实例都成功连接到这个 tc。我们成功地插入、更新并进入我们的每个缓存。但是我们不能迭代任何缓存。
也许我们以错误的方式配置了缓存,但似乎尚未实现迭代器方法(在 org.ehcache.clustered.client.internal.store.ClusteredStore 中):
@Override
public Iterator<Cache.Entry<K, ValueHolder<V>>> iterator() {
// TODO: Make appropriate ServerStoreProxy call
throw new UnsupportedOperationException("Implement me");
}
我们的缓存配置如下所示:
<service>
<tc:cluster>
<tc:connection url="terracotta://10.23.69.20:9510/clustered"/>
<tc:server-side-config auto-create="true">
<tc:default-resource from="default-resource"/>
</tc:server-side-config>
</tc:cluster>
</service>
<cache-template name="CacheTemplate">
<resources>
<tc:clustered-dedicated unit="MB">16</tc:clustered-dedicated>
</resources>
<tc:clustered-store consistency="strong"/>
</cache-template>
<cache alias="CacheDaemon" uses-template="CacheTemplate">
<key-type>java.lang.String</key-type>
<value-type>com.server.cache.DaemonInstance</value-type>
</cache>
<cache alias="CacheProperty" uses-template="CacheTemplate">
<key-type>java.lang.String</key-type>
<value-type>java.lang.String</value-type>
</cache>
我没有找到任何其他方法,甚至没有找到密钥列表。
那么我们是否在缓存配置中犯了错误?还是EhCache分布式模式与这种方法完全不兼容(所以我们不会使用EhCache)。