关于缓存讨论

08-08-28 lijie250
加入系统是由SPRING2,STRUTS2,IBATIS2框架结合开发的,我现在只知道IBATIS有一个查询缓存,在网上查找的结果是缓存可以不同层面上的,分为

1、对象缓存

2、查询缓存

3、片断缓存

4、Action缓存

除了IBATIS有个查询缓存,其余这三个层面上,怎么在这个系统上实现?

那memcached是不是把这个都可以包括啊,请BANQ大哥帮我解释下,有点不是清楚!

banq
2008-08-29 11:00
缓存主要是对象缓存,存在哪个层面意义不大,只要存在就可以。

缓存是业务缓存,这点很关键,只有你最清楚你的哪些业务模型被缓存,因为这些业务模型使用频率最高。没有通用意义上的缓存解决方案,这也是缓存不被人重视忽略的原因。

lijie250
2008-08-29 14:29
这个基本上理解了,BANQ大哥说的就是等系统完成了,进行压力测试,发现那块业务出现了瓶颈,有针对性的缓存,才是真正用好缓存!

freebox
2008-08-29 15:29
看业务上哪里需要就在哪做,Hibernate也有一个对象级别的缓存。其实只要花点小功夫,就能做出来命中率很高的业务级别缓存,springmodles里也有一个,但我没弄成功。

lijie250
2008-08-29 15:33
那帮我解释下缓存的粒度是什么?是不是缓存的密集程度啊?

freebox
2008-08-30 10:48
应该是说缓存的细化程度,是细化到每个对象,还是细化到一个方法,还是所有方法都只用一个缓存

springmodules终于配置好了,但我也不打算用它,原因是它会flush掉所有缓存,根本不管是否真的需要flush,为什么呢?因为它不知道我这个方法到底会产生什么副作用,到底会影响哪些对象,它不知道的情况下为了保证对象完整,只好清空所有缓存了。

方法有什么副作用,会影响哪些数据只有我自己知道,所以只能做自己业务特定的缓存。

猜你喜欢