我用Ehcache 2 + spring boot. 这是我的配置:
@Bean
public CacheManager cacheManager() {
return new EhCacheCacheManager(ehCacheCacheManager().getObject());
}
@Bean
public EhCacheManagerFactoryBean ehCacheCacheManager() {
EhCacheManagerFactoryBean cmfb = new EhCacheManagerFactoryBean();
cmfb.setConfigLocation(new ClassPathResource("ehcache.xml"));
cmfb.setShared(true);
return cmfb;
}
ehcache.xml - in resources.
Run Code Online (Sandbox Code Playgroud)
现在我想用Ehcache 3 + spring boot和Java的配置,而不是XML,但我还没有发现这方面的任何实例。我的问题:
1)为什么几乎所有的例子都是基于xml 的?这怎么能比java config更好呢?
2)如何在不使用xml的情况下在spring boot中使用java config配置Ehcache 3?
我正在尝试新的ehcache版本,但我注意到,显然没有搜索API。
这是正常现象还是我缺少了什么?文档对此无能为力。
将对象添加到Hibernate二级对象缓存的CPU优势何时超过初始命中.
我目前正在使用没有二级缓存的Hibernate.这是一个处理音乐文件的应用程序(www.jthink.net/songkong),它使用Hibernate,因此它可以扩展更多数据,即它可以处理100,000首歌曲,内存比1000首歌曲更多.一旦处理完歌曲,那些歌曲就没兴趣了(除非用户运行撤销)
据我所知,如果我启用二级缓存(对于我的歌曲类),那么首先将歌曲写入缓存将使用更多的cpu然后如果只是写入数据库,并且对歌曲对象的其他修改也将需要更多的cpu资源.但是随后从Ehcache中检索歌曲将需要更少的资源,然后从数据库中检索它.
我的歌曲按文件夹逐个处理并经过多个阶段(在不同的执行程序上),当它们在下一个Executor上排队时我们只是将歌曲ID作为参数传递,否则它将使用大量堆内存来存储Song对象他们自己.因此,当特定任务实际上在Executor上运行时,它所做的第一件事就是检索那些id的歌曲.
因此,没有特定的歌曲ID被检索1000次,但每首歌曲通常被写入1至4次并检索10次.因此,如果我们有一个非常小的缓存(因为我想保持堆内存受到严密控制)我会期望处理前几个文件夹将其歌曲添加到缓存中,然后当他们从新文件夹中完成歌曲时将采取他们的放在缓存中.
但我的问题是,它值得吗?
根据经验,10次检索与1-4次写入有意义使用二级缓存,或仅在比率更像100:1时才有用?