一、Memcached介绍
memcached是以LiveJournal旗下DangaInteractive公司的BradFitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。
许多Web应用都将数据保存到RDBMS中,应用服务器从中读取数据并在浏览器中显示。但随着数据量的增大、访问的集中,就会出现RDBMS的负担加重、数据库响应恶化、网站显示延迟等重大影响。
这时就该memcached大显身手了。memcached是高性能的分布式内存缓存服务器。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。
二、Memcached链接
1. 官网
2. Memcached下载地址
http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip
双击exe文件打开memcached服务端
3. Memcached参考文章
http://blog.charlee.li/memcached-pdf/
三、MemcachedJava客户端
1. memcachedclientforjava
较早推出的memcachedJAVA客户端API,应用广泛,运行比较稳定。
2. spymemcached
Asimple,asynchronous,single-threadedmemcachedclientwritteninjava.支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,但是稳定性不好,测试中常报timeOut等相关异常。
3. xmemcached
XMemcached同样是基于javanio的客户端,javanio相比于传统阻塞io模型来说,有效率高(特别在高并发下)和资源耗费相对较少的优点。传统阻塞IO为了提高效率,需要创建一定数量的连接形成连接池,而nio仅需要一个连接即可(当然,nio也是可以做池化处理),相对来说减少了线程创建和切换的开销,这一点在高并发下特别明显。因此XMemcached与Spymemcached在性能都非常优秀,在某些方面(存储的数据比较小的情况下)Xmemcached比Spymemcached的表现更为优秀,具体可以看这个JavaMemcachedClientsBenchmark。
由于memcachedclientforjava发布了新版本,性能上有所提高,并且运行稳定,所以建议使用memcachedclientforjava。
XMemcached也使用得比较广泛,而且有较详细的中文API文档,具有如下特点:高性能、支持完整的协议、支持客户端分布、允许设置节点权重、动态增删节点、支持JMX、与Spring框架和Hibernate-memcached的集成、客户端连接池、可扩展性好等。