緩存-memcache

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/


服務器端配置簡單,安裝過程:

1. 安裝第三方軟件庫

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

2. 查找Memcached

yum search memcached

3. 安裝Memcached

yum -y install memcached

4. 驗證安裝

memcached -h
應該會輸出一些幫助信息

5. 將memcache加入啓動列表

chkconfig –level 2345 memcached on

6. 配置Memcache

vi /etc/sysconfig/memcached
文件中內容以下
PORT=」11211″ 端口
USER=」root」 使用的用戶名
MAXCONN=」1024″ 同時最大鏈接數
CACHESIZE=」64″ 使用的內存大小
OPTIONS=」" 附加參數

7. 查看memcache狀態

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

相關文章
相關標籤/搜索