浏览 1715 次
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2008-04-19
设置缓存 <cacheModel id="cust" type="OSCACHE"> <flushInterval hours="24"/> <flushOnExecute statement="inserttest"/> </cacheModel> 使用缓存 <select id="selectcount" resultClass="java.lang.Integer" parameterClass="java.util.Map" cacheModel="cust"> 这样一来A用户在查询的时候可以使用缓存.B用户在使用这个查询语句的时候也使用了缓存.现在的问题是 如果C用户执行了新增操作(inserttest),这个时候都要全部刷新缓存了.那么A,B用户在执行查询的时候又要从数据库中获取了. 请问怎么样的设置可以使C用户执行了新增操作,不影响现有缓存呢? 另外,IBATIS中OSCACHE缓存的KEY,是依据什么的? 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-04-19
你这个明显是错误的 如果c已经对数据进行了更改 而a.b操作时不重新从数据库读取的话会产生垃圾数据 也就是数据结果不一致 可能会产生致命错误
我上一个项目就是为了这个头痛 当时是集群环境下的的缓存同步 |
|
返回顶楼 | |
发表时间:2008-04-19
那如果项目使用的人很多,那么所谓的缓存还有什么意义呢?每次别人做一次新增操作,所有人必须从数据库中再取数据.动态更新的数据,怎么处理???
|
|
返回顶楼 | |
发表时间:2008-04-19
首先保证程序的正确性 如果程序都不正确的话其他就是免谈
在一般应用中读写操作的频率明显是不一样的 写绝大多数情况下比读少 这也是缓存存在的意义 还有就是 一般数据库也有缓存的 |
|
返回顶楼 | |
发表时间:2008-04-19
那比如说有3000个人同时在线,这个时候起用缓存,那么能保证这3000个人不做操作吗?操作了就缓存刷新.IBATIS能不能做到这个缓存刷新只对操作者,因为只有操作者更新了数据才需要刷新缓存,否则就出现数据不一致,但是对于其他用户来说,你做的操作对我来说是不可见的.我不需要刷新自己的缓存.
|
|
返回顶楼 | |