0

以下用于获取所有缓存的代码在 2.10 (net.sf.ehcache.*) 中工作

public Map<CacheRegion, Map<Object, Element>> getCache() {
    Map<CacheRegion, Map<Object, Element>> cachedData = new HashMap<CacheRegion, Map<Object, Element>>();

    for (CacheRegion cacheRegion : CacheRegion.values()) {
        Cache cache = cacheManager.getCache(cacheRegion.getRegionName());
        Ehcache ehCache = ((EhCacheCache) cache).getNativeCache();
        Map<Object, Element> cacheMap = ehCache.getAll(ehCache.getKeys());
        cachedData.put(cacheRegion, cacheMap);
    }

    return cachedData;
}

// CacheRegion is an enum with cache keys

如何在 EhCache 3.9 (org.ehcache.*) 中实现相同的功能?我至少有 2 种不同类型的实体被缓存。我尝试查看https://stackoverflow.com/a/50389398/4669619但这对我不起作用。到目前为止,我已经替换ElementObject.

public Map<CacheRegion, Map<Object, Object>> getCache() {
    Map<CacheRegion, Map<Object, Object>> cachedData = new HashMap<CacheRegion, Map<Object, Object>>();

    for (CacheRegion cacheRegion : CacheRegion.values()) {
        Cache cache = cacheManager.getCache(cacheRegion.getRegionName());
        ...
    }
}
  • Element在 2.x 示例中可以适用于任何/所有实体。它在 3.x 中不可用,所以我尝试Object改用
  • Ehcache在 3.x 中也不可用,因此我无法将结果存储((EhCacheCache) cache).getNativeCache();在其中
  • Ehcache在 3.x 中不可用意味着getAll功能不可用

任何建议/想法将不胜感激!

4

0 回答 0