论坛首页 入门技术论坛

各位老大:关于IBATIS多用户操作缓存的刷新问题!!!!!!!.

浏览 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,是依据什么的?


   发表时间:2008-04-19  
你这个明显是错误的 如果c已经对数据进行了更改 而a.b操作时不重新从数据库读取的话会产生垃圾数据 也就是数据结果不一致 可能会产生致命错误
我上一个项目就是为了这个头痛 当时是集群环境下的的缓存同步
0 请登录后投票
   发表时间:2008-04-19  
那如果项目使用的人很多,那么所谓的缓存还有什么意义呢?每次别人做一次新增操作,所有人必须从数据库中再取数据.动态更新的数据,怎么处理???
0 请登录后投票
   发表时间:2008-04-19  
首先保证程序的正确性 如果程序都不正确的话其他就是免谈
在一般应用中读写操作的频率明显是不一样的  写绝大多数情况下比读少 这也是缓存存在的意义 还有就是 一般数据库也有缓存的
0 请登录后投票
   发表时间:2008-04-19  
那比如说有3000个人同时在线,这个时候起用缓存,那么能保证这3000个人不做操作吗?操作了就缓存刷新.IBATIS能不能做到这个缓存刷新只对操作者,因为只有操作者更新了数据才需要刷新缓存,否则就出现数据不一致,但是对于其他用户来说,你做的操作对我来说是不可见的.我不需要刷新自己的缓存.
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics