java web开发中cache的使用

10-11-02 tianhandigeng
最近在做一个团购系统,现在页面中有很多共同数据需要使用,所以决定从数据库中取出数据以后放到ServletContext或cache,现在不知道放到哪里好,有哪位大侠可以给我一下意见?
    

banq
2010-11-03 10:42
最好放在ehcache中,ehcache自己是放在servletContext中,但有自己的内存管理。

tianhandigeng
2010-11-03 15:03
谢谢banq 老师,不过对这个cache我还是没有怎么弄懂,把数据从数据库中取出来之后,如果要用cache是否需要手动的放到cache中,从cache取得这些数据应该怎么取?论坛有一位也是问了ServletContext和cache的使用有什么区别,对于将数据放到ServletContext中我可以理解,因为很多页面都要使用数据,也就是共享,所以当服务器启动时就一次性将数据取出放到ServletContext中,显示时就从ServletContext,这样解决了共享也解决了每次都要从数据库中取数据的麻烦,对于cache我就不懂了,取出的数据时放到了cache的什么地方,就算放进去了,如何保证这些数据是全局的,从ServletContext中取出数据可以用xx.getAttribute("")将数据取出,那么怎样从cache中取出数据呢?banq老师,请你为我解答一下,刚工作对这些处理还不怎么懂,希望你给我指点一下,谢谢

banq
2010-11-04 10:22
如果你直接放在servletContext中,就没有容量大小的限制,有多少内存用多少,直至耗光。

而EHcache这些缓存产品就象一个容器,这个容器也是放在ServletContext中,Ehcache按照一些算法,比如经常使用的留着,不用的就扔掉,定时更新,等等,反正帮助你控制有限的内存,而且能够无缝拓展到多台服务器上,把他们内存合起来使用。

具体Ehcache使用很方便,和ServletContext.getXXX和Map的get和put方式一样,具体网上查查Ehcache使用代码,很简单。

tianhandigeng
2010-11-04 14:18
恩,谢谢banq老师,顺便问一下,你写的《Java实用系统开发指南》怎么网上都很少卖,很多网站上都标着缺货,那版是2004年的,没想过重新整理一下再版吗?加入一些新内容我觉得更好点

猜你喜欢