看了一些缓存的东西,但是我有些不明白的地方,向大家请教,比如现在有很多缓存解决方案,诸如oscache,ehcache等等,我使用过,主要是用来往磁盘持久化的,但是我看了很多的介绍,大多作为内存的缓存,包括apache的对象池等,我疑惑的内存的缓存,可以放在数组中或者容器中(list,map)这样可以满足内存的缓存啊!为什么那么多的框架还需要提供解决方案呢?请各位给一个让我明白或者恍然大悟的答案!谢谢各位高手了!
5条回答 默认 最新
- iteye_16421 2011-03-15 13:07关注
关于这个问题要看你应用的场合,如果你的系统比较小,只一台服务器就能搞定,不需要分布式的,所要求的缓存也比较小,一台机器就有搞定,那你用map就行了,没必要用其它的缓存系统,用其它的缓存系统,反而效率更低。
如果你的系统比较大,有多台服务器要需去共享缓存中的数据,那么你的缓存系统就需要基于网络连接方式完成服务,最好支持分布式,将来可以方便的扩展缓存大小,并且这些缓存系统提供了缓存的策略,无需你去释放内存,也不会存在内存溢出和内存泄露的问题。
缓存系统都是作为数据库前端cache使用的。因为它比数据库少了很多SQL解析、磁盘操作等开销,而且它是使用内存来管理数据的,所以它可以提供比直接读取数据库更好的性能,在大型系统中,访问同样的数据是很频繁的,缓存系统可以大大降低数据库压力,使系统执行效率提升。
另外,缓存系统也经常作为服务器之间数据共享的存储媒介,例如在SSO系统中保存系统单点登陆状态的数据就可以保存在缓存系统中,被多个应用共享。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报