是否有一种方法可以检查对象是否在EHCache管理的缓存中?
我所面临的挑战是,我实现了一个从数据库中检索单个值的方法(find(key)方法)。EHCache很好地缓存了find方法的结果,但现在我希望减少多次调用该方法所产生的SQL查询的数量。
为了实现这一点,我们实现了一个新的方法,它以一个键列表作为参数,但由于每个方法调用的参数都不相同,因此EHCache在缓存结果时做得很差。
所以我想重新设计一些东西。我的想法是,我在find(list of keys)方法中使用参数,执行一个大型SQL查询,然后将结果填充该高速缓存中,我还没有完全理解它,但在写下这些内容后,感觉手动修改缓存也是行不通的。
任何见解或提示都将不胜感激!
3条答案
按热度按时间5f0d552i1#
可能是KeyInCache?
yh2wf1be2#
可以通过jmx访问Hibernate统计信息+ ehcache统计信息等。EhcacheHibernateMBean是通过jmx公开所有API的主接口。它基本上扩展了两个接口-- EhcacheStats和HibernateStats。顾名思义,EhcacheStats包含与Ehcache相关的方法和与Hibernate相关的HibernateStats。您可以查看缓存命中/未命中/放置率,动态地更改配置元素值--如maxElementInMemory、TTI、TTL启用/禁用统计信息收集等以及其他各种操作。这可以在应用程序中通过重写buildSessionFactory来实现在Hibernate配置中启用二级缓存时,通过将tc.active添加为“true”System属性对LocalSessionFactoryBean执行()方法
不,当您通过JMX访问您应用程序时,请转到“Mbeans”选项卡,在左边转到net.sf.ehcache. hib--〉net.sf.ehcache.Cachemanager@..
在此下转到属性。单击属性并在右侧检查RegionCacheAttriutes。
备注:视图在JDK1.7中已更改。登录到JMX控制台后,导航到Mbeans选项卡下的net.sf.ehcache. hib。单击CacheRegionStats。单击它将打开右侧的屏幕。双击顶部部分,它将打开如下所示的表格导航。您必须在表格导航中进行导航,以查找您感兴趣的任何对象的计数。
6ju8rftf3#
您看过
SelfPopulatingCache and or BlockingCache
了吗?在启动数据库检索之后,它们将阻塞所有辅助请求程序,直到该高速缓存被填充