gpt4 book ai didi

java - 如何从二级查询缓存中获取条目?

转载 作者:搜寻专家 更新时间:2023-11-01 03:14:26 28 4
gpt4 key购买 nike

在我的grails应用程序,我想显示所有区域的二级缓存的当前条目

我的代码如下:

def getCacheStats() {
StatisticsImpl stats = sessionFactory.statistics
for (regionName in stats.secondLevelCacheRegionNames) {
log.debug stats.getSecondLevelCacheStatistics(regionName).entries
}
}

但是,只要区域名称不是 org.hibernate.cache.StandardQueryCache(用于 Query Cache 的区域),一切正常。在这种情况下,会抛出异常:

java.lang.ClassCastException: org.hibernate.cache.QueryKey cannot be cast to org.hibernate.cache.CacheKey

谷歌搜索后,我没有找到任何关于 如何显示缓存查询结果集的条目列表 与区域 StandardQueryCache 相关的线索更新时间戳缓存

你能帮我找到解决办法吗?

最佳答案

这相当复杂,但这应该会让您走得更远。您可以通过 SessionFactory 访问查询缓存,因此假设您可以访问它(例如通过“def sessionFactory”),那么您可以像这样访问底层缓存:

def cache = sessionFactory.queryCache
def realCache = cache.region.@underlyingCache.backingCache
def keys = realCache.keys
for (key in keys) {
def value = realCache.get(key).value
// do something with the value
}

请注意,这些值将是长值列表。我不确定第一个表示什么(它是一个很大的值,例如 5219682970079232),但其余的是缓存域类实例的 ID。

关于java - 如何从二级查询缓存中获取条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2841885/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com