关于EHCACHE的问题,请看详细? 400 报错
公司一个web项目,有一个页面无规律的获取不到数据,但是重启下tomcat就好了,而且在本地连接外网数据库的话本地页面是有数据的,初步判定是因为这个页面列表用到了ehcache
我把数据字典整张表缓存起来放到的ehcache中,下面是我的缓存配置
<cache name="DATAPARAMETER_CACHE"
maxElementsInMemory="100"
maxElementsOnDisk="100"
eternal="false"
overflowToDisk="true"
timeToIdleSeconds="15000"
timeToLiveSeconds="18000"
memoryStoreEvictionPolicy="LFU"/>
数据字典大概有400条数据。
有人可能会说把maxElementsInMemory和maxElementsOnDisk字段值调大一点不就Ok了吗?但是我在本地测试了一下,我把这个两个值都改成了非常小的值。缓存根本存不进去(原因未知,还请大神求解)
下面是我获取存入缓存的方法:
public HashMap<String, DataParameter> queryDataParameter(){
HashMap<String, DataParameter> map = (HashMap<String, DataParameter>) EHCacheUtil.get(EHCacheName.DATAPARAMETER_CACHE, "query");
if (ObjectUtils.isNullObj(map)) {
List<DataParameter> dataParametersList = dataParameterMapper.selectOneDataParameter();
if (!ObjectUtils.isNullObj(dataParametersList)) {
map = new HashMap<String, DataParameter>();
if (!ObjectUtils.isNullObj(dataParametersList)) {
for (DataParameter dp:dataParametersList) {
map.put(dp.getCategoryCode()+dp.getParamValue(), dp);
}
}
EHCacheUtil.put(EHCacheName.DATAPARAMETER_CACHE, "query", map);
}
}
return map;
}
还希望有大神不吝赐教! 谢谢
好郁闷,为什么没人回答啊 ######希望有懂这一方面的大神不吝赐教######是否某些数据长期没有命中就彻底被从内存中废弃了?
######有可能但是不确定######上redis吧。 可以方便管理缓存数据######没必要吧。######看你的代码的,如果缓存没有,是不是从数据库拿的?你可以断点调试看下从数据库加载到的是否有数据######回复 @沉沦s : 缓存的对象有失效时间的######是不是有这种情况,我缓存了整张表,里面的某些key会消失,但是这个缓存对象还是在的######redis和ecache哪个好,有什么区别?######个人觉得redis更好,但是项目里面原先的是ehcache,就没去做redis
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。