Spring Boot EhCache 3.9 --获取所有缓存条目(在EhCache 2.10中工作)

8fq7wneg  于 2023-01-05  发布在  Spring
关注(0)|答案(2)|浏览(318)

以下代码用于获取Python 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. *)中实现相同的效果?我至少缓存了两种不同类型的实体。我尝试查看https://stackoverflow.com/a/50389398/4669619,但没有效果。到目前为止,我已经用Object替换了Element

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在Python 2.x中可以用于任何/所有实体,但在Python 3.x中不可用,因此我尝试使用Object
  • Ehcache在Python 3.x中也不可用,所以我不能将((EhCacheCache) cache).getNativeCache();的结果存储在
  • Ehcache在3.x中不可用意味着getAll功能不可用

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

u2nhd7ah

u2nhd7ah1#

正如在这篇文章中提到的EHCache 3.5 Get All Cache Keys / Entries,这不是一个简单的API调用在Ehcache 3。
但是你可以像这样得到所有的钥匙。

StreamSupport.stream(cacheManager.getCache(cacheName).spliterator(), false).collect(Collectors.toList())
ycl3bljg

ycl3bljg2#

试试这个

CacheManager.ALL_CACHE_MANAGERS.stream()
    .forEach(cacheManager -> Arrays.stream(cacheManager.getCacheNames()).forEach(s -> log.info("Cache {} -> {}", s, cacheManager.getCache(s))));

相关问题