84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
Java开源缓存框架介绍(OSCache,JSC) OSCache是个一个广泛采用的高性能的J2EE缓存框架,OSCache能用于任何Java应用程序的普通的缓存解决方案。 有一个疑惑。就是JAVA缓存框架与memcache有什么区别呢?我把所有数据查询出来放在memcache里面不行么?比如说oscache与memcache适用场合有什么区别呢?
认证高级PHP讲师
参考j2cache实现
OSCache好久没更新了,建议多看看EHCache的官方文档。
ehcache这种jvm的缓存和memcache这种io级别的缓存还是有明显差别的,以下区别决定了他们会在不同的场景下使用。优点: 没有IO开销会有更高的效率,使用起来也更加灵活。缺点: 但是公用jvm内存也会对应用本身有影响,另外多个应用共享就比较苦难了。(ehcache有一个不使用jvm内存的方案)
优点
缺点
OSCache或者EHCache这种,主要的应用场景大多是应用内缓存。也就是我这一个程序里使用的缓存。所有的缓存在自己写的这个程序里面。 而 memcache 是独立的另一个进程,是独立的缓存,缓存的数据保存的另一个进程的内存中。区别在我看来有两点:
个人感觉memcache就类似一个对象的容器,只是提供了简单的放入对象,移出对象的功能,可以想象成是一个Map。 而OSCache是在这种对象容器的基础上进行了封装,提供了更强大的功能,可以通过简单配置文件来实现一些内容的自动缓存,而直接使用memcache需要额外写很多缓存的罗辑和策略代码。
使用缓存,比如讲一些固定的master数据缓存起来,网站性能提升5-10倍非常容易。我们使用EHCache轻轻松松将一个选课系统的性能提升了7-8倍。
使用缓存,最麻烦的就是处理数据的同步。比如一个redis缓存服务器、一个mysql服务器,你可以写数据时同时写两个数据库,但是处理事务会存在问题,关于缓存同步,还是比较麻烦的事情
OSCache或者EHCache这种是JVM缓存,它不能在多个应用或者说不能被你的集群共享,这样就会造成内存的浪费,适用于不需要集群的小型应用。memcache 独立的缓存,可以被集群或者多个应用共享,适用于比较大一些的应用吧。
OSCache或者EHCache常用于服务器本地缓存,直接使用的话,只能单个应用进程存取,如果开了多个进程或部署多台服务器的话,每个进程只能访问本地的缓存,如果需要缓存同步,需要写相关的同步代码。ehcache还支持RMI、JGroups、JMS的分布式缓存,就不需要手写同步代码了,还可以搭建单独的EhCache Server,这种情况就跟memcache差不多了。
memcache缓存是单独的进程,好处是使用进程之间少了缓存同步,因为数据在memcache上只有一份,而不是ehcache在每个进程上都有一份;但访问需要进程间通信,多了通信的开销。
参考j2cache实现
OSCache好久没更新了,建议多看看EHCache的官方文档。
ehcache这种jvm的缓存和memcache这种io级别的缓存还是有明显差别的,以下区别决定了他们会在不同的场景下使用。
优点
: 没有IO开销会有更高的效率,使用起来也更加灵活。缺点
: 但是公用jvm内存也会对应用本身有影响,另外多个应用共享就比较苦难了。(ehcache有一个不使用jvm内存的方案)OSCache或者EHCache这种,主要的应用场景大多是应用内缓存。也就是我这一个程序里使用的缓存。所有的缓存在自己写的这个程序里面。
而 memcache 是独立的另一个进程,是独立的缓存,缓存的数据保存的另一个进程的内存中。区别在我看来有两点:
个人感觉memcache就类似一个对象的容器,只是提供了简单的放入对象,移出对象的功能,可以想象成是一个Map。
而OSCache是在这种对象容器的基础上进行了封装,提供了更强大的功能,可以通过简单配置文件来实现一些内容的自动缓存,而直接使用memcache需要额外写很多缓存的罗辑和策略代码。
使用缓存,比如讲一些固定的master数据缓存起来,网站性能提升5-10倍非常容易。我们使用EHCache轻轻松松将一个选课系统的性能提升了7-8倍。
使用缓存,最麻烦的就是处理数据的同步。比如一个redis缓存服务器、一个mysql服务器,你可以写数据时同时写两个数据库,但是处理事务会存在问题,关于缓存同步,还是比较麻烦的事情
OSCache或者EHCache这种是JVM缓存,它不能在多个应用或者说不能被你的集群共享,这样就会造成内存的浪费,适用于不需要集群的小型应用。memcache 独立的缓存,可以被集群或者多个应用共享,适用于比较大一些的应用吧。
OSCache或者EHCache常用于服务器本地缓存,直接使用的话,只能单个应用进程存取,如果开了多个进程或部署多台服务器的话,每个进程只能访问本地的缓存,如果需要缓存同步,需要写相关的同步代码。ehcache还支持RMI、JGroups、JMS的分布式缓存,就不需要手写同步代码了,还可以搭建单独的EhCache Server,这种情况就跟memcache差不多了。
memcache缓存是单独的进程,好处是使用进程之间少了缓存同步,因为数据在memcache上只有一份,而不是ehcache在每个进程上都有一份;但访问需要进程间通信,多了通信的开销。