memcache是c语言编写的内存缓存,常见同php协同应用,支持多种语言。对于java web有三种经常使用的clientphp
Memcached客户端程序java
Memcached的java客户端已经存在三种了:web
官方提供的基于传统阻塞io由Greg Whalin维护的客户端shell
Dustin Sallings实现的基于java nio的Spymemcached缓存
XMemcached服务器
1. 三种API比较 并发
1)memcached client for java负载均衡
较早推出的memcached JAVA客户端API,应用普遍,运行比较稳定。框架
2)spymemcached异步
A simple, asynchronous, single-threaded memcached client written in java. 支持异步,单线程的memcached客户端,用到了java1.5版本的concurrent和nio,存取速度会高于前者,可是稳定性很差,测试中常报timeOut等相关异常。
3)xmemcached
XMemcached一样是基于java nio的客户端,java nio相比于传统阻塞io模型来讲,有效率高(特别在高并发下)和资源耗费相对较少的优势。传统阻塞IO为了提升效率,须要建立必定数量的链接造成链接池,而nio仅须要一个链接便可(固然,nio也是能够作池化处理),相对来讲减小了线程建立和切换的开销,这一点在高并发下特别明显。所以XMemcached与Spymemcached在性能都很是优秀,在某些方面(存储的数据比较小的状况下)Xmemcached比Spymemcached的表现更为优秀,具体能够看这个Java Memcached Clients Benchmark。
2. 建议
因为memcached client for java发布了新版本,性能上有所提升,而且运行稳定,因此建议使用memcached client for java。
XMemcached也使用得比较普遍,并且有较详细的中文API文档,具备以下特色:高性能、支持完整的协议、支持客户端分布、容许设置节点权重、动态增删节点、支持JMX、与Spring框架和Hibernate-memcached的集成、客户端链接池、可扩展性好等。
参考:http://blog.163.com/sir_876/blog/static/11705223201211354346520/
服务器端配置简单,安装过程:
wget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.5.2-2.rf.src.rpm
rpm -ivh rpmforge-release-0.5.2-2.rf.src.rpm
yum search memcached
yum -y install memcached
memcached -h
应该会输出一些帮助信息
chkconfig –level 2345 memcached on
vi /etc/sysconfig/memcached
文件中内容以下
PORT=”11211″ 端口
USER=”root” 使用的用户名
MAXCONN=”1024″ 同时最大链接数
CACHESIZE=”64″ 使用的内存大小
OPTIONS=”" 附加参数
memcached-tool [Memcache Server IP]:[Memcache Server Port] stats
如:memcached-tool 127.0.0.1:11211 stats
3.memcached 监控:
能够借助php页面实现图形监控
也可使用 telnet命令监控
[root@PictureRecognition php]# whereis memcached memcached: /usr/local/bin/memcached [root@PictureRecognition php]# /usr/local/bin/memcached -p 11211 -m 1024m -d can't run as root without the -u switch [root@PictureRecognition php]# /usr/local/bin/memcached -uroot -p 11211 -m 1024m -d [root@PictureRecognition php]# ps -aux |grep mem
[root@PictureRecognition php]# telnet localhost 11211 Trying ::1... telnet: connect to address ::1: Connection refused Trying 127.0.0.1... Connected to localhost. Escape character is '^]'. status ERROR stats STAT pid 11044 STAT uptime 2390 STAT time 1455781569 STAT version 1.2.0 STAT pointer_size 64 STAT rusage_user 0.076988 STAT rusage_system 0.709892 STAT curr_items 417 STAT total_items 600 STAT bytes 4031296 STAT curr_connections 12 STAT total_connections 15 STAT connection_structures 13 STAT cmd_get 2229 STAT cmd_set 600 STAT get_hits 1631 STAT get_misses 598 STAT bytes_read 4265823 STAT bytes_written 15212607 STAT limit_maxbytes 1073741824 END
memcache支持分布式,但各个节点不进行通讯,负载均衡策略在应用中创建