`
mengxs
  • 浏览: 28220 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

memcached,oscache 浅析

阅读更多

现在开源缓存让人眼花撩乱,介绍一下两个比较典型的缓存

 

oscache

oscache支持内存缓存和硬盘缓存两种方式,且可以两种方式同时使用

使用方式:oscahce,oscache属于应用端缓存,即只能和应用服务在同一台机器上,或者说只能与运行的应用在同一个
             JVM中使用。

集群方式: oscache 依赖jgroups 的组播功能可以进行分布式集群,oscache可以参考我
             之前的一边文章:http://mengxs.iteye.com/admin/blogs/1023791  ,不过oscache在集群方面存在bug。
优点:

1.oscache提供了jsp标签库,在jsp页面可以很简单对数据进行缓存

2.支持cron表达式

3.配置简单,只要将配置文件稍作修改或不修改就可使用

4.oscache在读写操作时,并发对相同 key 进行写操作时它只写一次:多个线程T1,T2,T3并发去读取 key的缓存
 对象,T1读取数据时发现数据过期,这时T1会获取key的写锁,T2,T3读取数据时也发现数据过期,同时发现这
 个key的数据正在被其他线程进行写,这时T2,T3就处于等待状态,直到T1将新的数据写入缓存,T2、T3线
  程被唤醒,T2、T3醒来后发现缓存数据已经被更新,他们会重新在缓存中获取key的数据。

缺点:

1.集群本身存在bug http://mengxs.iteye.com/admin/blogs/1023791  

2.缓存只能与应用处于同一JVM种,不能够将oscache放在独立的缓存服务器上。不适合大规模集群

 

MEMCACHED

memcached是单独的缓存服务,独立于应用层,可以放在单独的机器上。将memcached安装完以后(具体安装看官方文档),如果要使用的话,需要下载memcached客户端,如:https://github.com/gwhalin/Memcached-Java-Client

 

优点:

1.memcached本身独立于应用层,可以放在单独的服务器上

2.多台memcached缓存服务器可以进行分布式,分布式是通过客户端来决定将key 的对象 缓存到指定的某台机器上,多台memcached之间是没有相互通信的,他们是单独互不影响。适合集群,不存在网络爆炸的危险

 

缺点:

客户端提供的缓存的同一key的读、写操作都是并发执行,这点感觉不如socache周到。

 

 总结 

 从可扩展行和稳定性来看,建议使用memcached 作为内存缓存

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics