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支持分佈式,但各個節點不進行通訊,負載均衡策略在應用中創建