Ehcache和MemCached比较分析

项目  Memcache Ehcache
分布式  不完全,集群默认不实现  支持 
集群  可通过客户端实现  支持(默认是异步同步) 
持久化  可通过第三方应用实现,如sina研发的memcachedb,将cache的数据保存到[url=]Berkerly DB[/url]

支持。持久化到本地硬盘,生成一个.data和.index文件。cache初始化时会自动查找这两个文件,将数据放入cache
效率  高  高于Memcache
容灾  可通过客户端实现。  支持 
缓存数据方式 
缓存在memcached server向系统申请的内存中


可以缓存在内存(JVM中),也可以缓存在硬盘。通过CacheManager管理cache。多个CacheManager可配置在一个JVM内,CacheManager可管理多个cache。

缓存过期移除策略 
LRU


[url=]LRU([/url]默认),FIFO,LFU

缺点 
功能不完善,相对于Ehcache效率低


只适用于java体系,只能用java编写客户端

优点 
简洁,灵活,所有支持socket的语言都能编写其客户端


效率高。功能强大。

最近研究了一下缓存技术,主要比较了一下memcached和ehcache。

ehcache是纯java编写的,通信是通过RMI方式,适用于基于java技术的项目。

memcached服务器端是c编写的,客户端有多个语言的实现,如c,php(淘宝,sina等各大门户网站),python(豆瓣网),java(Xmemcached,spymemcached)。memcached服务器端是使用文本或者二进制通信的。memcached的 python客户端没有开源,其他语言的好像都开源了。另外我以前不明白为什么各大互联网公司都是使用memcached缓存,后来我明白了原因:因为各大门户网站以及淘宝是使用php编写的网站,memcached有php客户端,而ehcache是纯java的,囧。

时间: 2024-10-12 17:05:42

Ehcache和MemCached比较分析的相关文章

Memcached源代码分析 - Memcached源代码分析之消息回应(3)

文章列表: <Memcached源代码分析 - Memcached源代码分析之基于Libevent的网络模型(1)> <Memcached源代码分析 - Memcached源代码分析之命令解析(2)> <Memcached源代码分析 - Memcached源代码分析之消息回应(3)  > <Memcached源代码分析 - Memcached源代码分析之HashTable(4) > <Memcached源代码分析 - Memcached源代码分析之增删

缓存选型-Ehcache、memcached、Redis

缘由 今天发现有个项目访问很慢,其中一个原因就是读取oracle时慢,数据量不大,配置表忽略,业务表也就38万条记录.一个解决方案是使用缓存. 那么问题来了,用哪个缓存框架好? Ehcache 项目一直用它,不过版本可能有点低.确实很方便,就一个jar包搞过来就行.java的首选. Memcached 用c写的,比较麻烦,要安装.与java集成的资料感觉不是很多. Redis 也是要安装,虽然我装过不太麻烦,但比起Ehcache还是有点麻烦. 我的选择 看完了下面参考资料的第一篇文章,我就决定还

Ehcache和MemCached区别及应用

ehcache是纯java编写的,通信是通过RMI方式,适用于基于java技术的项目. memcached服务器端是c编写的,客户端有多个语言的实现,如c,php(淘宝,sina等各大门户网站),python(豆瓣网), java(Xmemcached,spymemcached).memcached服务器端是使用文本或者二进制通信的. 项目 Memcache Ehcache 分布式 不完全,集群默认不实现 支持 集群 可通过客户端实现 支持(默认是异步同步) 持久化 可通过第三方应用实现,如si

Memcached深度分析

Memcached是danga.com(运营LiveJournal的技术团队)开发的一套分布式内存对象缓存系统,用于在动态系统中减少数据库负载,提升性能.关于这个东西,相信很多人都用过,本文意在通过对memcached的实现及代码分析,获得对这个出色的开源软件更深入的了解,并可以根据我们的需要对其进行更进一步的优化.末了将通过对BSM_Memcache扩展的分析,加深对memcached的使用方式理解. 本文的部分内容可能需要比较好的数学基础作为辅助. ◎Memcached是什么 在阐述这个问题

Ehcache BlockingCache 源码分析

BlockingCache是对Ehcache进行的扩展,BlockingCache内置了读写锁,不需要用户显示调用. 要彻底分析BlockingCache的原理,需要首先来看一下它内部用到的一些类. public interface CacheLockProvider { /** * Gets the Sync Stripe to use for a given key. * <p/> * This lookup must always return the same Sync for a g

memcached源代码分析-----set命令处理流程

转载请注明出处:http://blog.csdn.net/luotuo44/article/details/44236591 前一篇博文以get命令为样例把整个处理流程简单讲述了一遍.本篇博文将以set命令具体讲述memcached的处理流程. 具体的命令为"set tt 3 0 10".并如果当然memcachedserver没有名为tt的item. 读取命令: 在前一篇博文的最后,conn的状态被设置为conn_new_cmd,回到了一開始的状态. 假设此时conn结构体里面的bu

Memcached原理分析

Memcached的内存管理方式 Memcached采用了名为Slab Allocation的机制分配,管理内存. Slab Allocation的原理相当简单.将分配的内存分割成各种尺寸的块(chucnk),并把尺寸相同的块分成组(chucnk的集合)如图: 而且slab Allocation还有重复使用已分配内存的目的.也就是说,分配到的内存不会释放,而是重复利用.Slab Allocation 的主要术语 Page :分配给Slab 的内存空间,默认是1MB.分配给Slab 之后根据sla

Memcached 状态机分析

worker线程拿到了这个连接之后,就应该是分配给这个连接一个结构体,包括这个连接所有的状态,都写buf等,这个结构体就是conn,然后这个worker线程会在它自己的event_base加入对这个新的连接的事件的监听.上面也说过了worker的event_base有两套处理逻辑,一个对notify_ receive_fd的,还有一套是对新连接的.这个notify_ receive_fd的处理逻辑就是处理2个事件,一个是建立连接,一个是改变锁的粒度.连接有个状态机: 1.listening:这个

转:Memcached 线程部分源码分析

目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个libevent实现的,分别是一个主线程和n个workers线程 无论是主线程还是workers线程全部通过libevent管理网络事件,实际上每个线程都是一个单独的libevent实例 主线程负责监听客户端的建