不经意间用了ibatis的缓存引发的一个问题
来源:互联网 发布:时时彩网站源码php 编辑:程序博客网 时间:2024/05/22 12:37
昨天遇到了一个比较奇怪的现象。我们的项目中使用了缓存,具体的做法是在每次请求时先看缓存中是否有数据,如果有的话就直接从缓存中获取返回,如果没有的话就调用存储过程查询返回,将查得的数据放入静态List中,这个List作为缓存。然后写一个定时任务每隔一段时间去清空这个List 。
我写的一个接口也是这么个流程,可是却有了问题。第一次请求以及在该缓存有效期内是没问题的,正常地查到了数据返回,可是有效期过了之后,缓存被清空了,正常情况下,程序会去查询存储过程并返回数据,然后然后将数据继续放入缓存中。可是现在,它返回为空了!以后它都返回为空了!我打了断点,明明看到程序去执行存储过程了,可是它就是返回空!第一次有数据,以后就没数据了!然后,昨天就结束了!
今天一大早我到公司,测试那个接口,它又有数据返回了。一个小时后,它又返回空了!对,没错,以后都是空!
我想,我看看这个接口和其它接口有什么不同吧,为毛其它接口没这个问题呢。
后来,我找到原因了,我差点晕了。
在ibatis 配置文件中,这个存储过程配置了ibatis的缓存!cacheModel="XXX"
缓存有效期是12h 。
难怪,过了一夜,它有数据了,一个小时(我的定时任务每小时会去清一次List缓存)后又没了,ibatis认为它在缓存(ibatis的)有效期内,所以并未去执行存储过程。
我们的项目中使用了ibatis ,我没有专门的去研究过它,上面的那段配置我是从项目中其它地方拷过来,然后修改的。
我不禁有了疑问,ibatis 有缓存机制,那么我们的项目中为什么还这么麻烦自己去写那种缓存的方法?我去问老员工,他的回答有些模棱两可。大概,在有些场合,ibatis的这种缓存机制不是很适用?
有很多东西都要去学习、了解!
- 不经意间用了ibatis的缓存引发的一个问题
- 一个不经意的内存泄露问题
- Ibatis缓存应用的一个小问题
- ibatis 缓存导致的一个问题
- 不经意间的悔恨
- mybatis缓存引发的问题
- nginx缓存引发的问题
- ibatis sqlMap 中注释引发的问题
- 不经意的
- 不经意的
- 不经意间犯得一个java.util.NoSuchElementException的错误
- QT 就少写了一个Q引发的巨大问题,
- 一个问题引发的思考
- 一个问题引发的笑话
- 一个引用 引发的问题
- 一个问题引发的思考
- 一个空格引发的问题
- 一个printf引发的问题
- 成佩涛编程之路——缓存系统redis简单使用
- 穿透内网所了解的一些知识
- 递归函数最终会结束,那么这个函数一定?
- Android学习之——优化篇(1)
- oracle SCN入门详解
- 不经意间用了ibatis的缓存引发的一个问题
- SSH框架总结(框架分析+环境搭建+实例源码下载)
- 我迷茫的人生
- zoj 1996
- 安装Apache Httpd 2.4.9
- Linux系统下常用操作及命令
- ibtool version mismatch error
- C++中一个类作为另一个类友元且产生了另一个类对象的使用方式
- CUDA学习,使用shared memory实现Reverse Array