執行個體講解分布式緩衝軟體Memcached的Java用戶端使用_java

來源:互聯網
上載者:User

Memcached介紹
下面就來介紹一下Memcached。

1、什麼是Memcached

Memcached是一個開源的高效能,分布式的記憶體對象緩衝系統,通過索引值隊的形式來對資料進行存取,Memcached是簡單而強大,它的簡單設計促進快速部署,易於開發,解決了大資料緩衝面臨的許多問題。


官方網址是:http://memcached.org/,目前已經有很多知名的互連網應用使用到了Memcached,比如Wikipedia、Flickr、Youtube、Wordpress等等。

2、下載Windows平台下的MemCached,地址為:

http://code.jellycan.com/files/memcached-1.2.6-win32-bin.zip

對應的源碼地址為:

http://code.jellycan.com/files/memcached-1.2.6-win32-src.zip

然後,解壓開來,會看到一個memcached.exe檔案,進行如下圖的安裝,將以系統服務的形式安裝到機上

然後查看系統服務,會發現已經可以看到memcached服務了

然後,選中此服務點滑鼠右鍵,啟動此服務。

在DOS介面中輸入:telnet 127.0.0.1 11211來確認服務是否啟動無誤,如果無誤,則會顯示如下視窗:

上面圖中顯示的ERROR是我隨便輸入字元後按斷行符號顯示的,這是因為你需要安裝memcached規定的協議來進行輸入,否則就顯示如上所示錯誤。

3、 memcached的協議與資料存取

所謂協議,可以理解為對其操作(資料存取)的文法規則,存取資料的常用命令和參數如下:

set:存入一條記錄

key:記錄的索引值

flags:十進位的int,標識儲存記錄時的用戶端標誌,在記錄取出時會返回。

exptim:資料的到期時間,0表示不到期,其他數值則表示有效毫秒數,在到期後,用戶端將取不到這條記錄,memcached中的到期記錄會被清空或刪除。

get:表示從memcached取出key對應的值,如果沒有對應的值則返回結束標誌END

append:表示對key所對應的值在最後再加入輸入的內容

delete:刪除key對應的值

更多協議可參考:memcached包中所帶的protocol.txt

具體例子如:

需要注意的是:在set時如果指定的字元長度為5,而輸入的內容超過了這個長度,那麼就會報錯:CLIENT_ERROR bad data chunk

4、 編寫代碼對memcached進行資料存取操作

一般而言,可以使用開源已封裝好的memcached用戶端來對memcached進行操作,當然你也可以根據memcached的協議在代碼中通過編寫socket通訊程式實現。

Memcached-Java-Client的下載頁面:

http://github.com/gwhalin/Memcached-Java-Client/downloads,然後選擇下載:

java_memcached-release_2.5.1.zip

在解壓開的Test目錄中可以看到有些寫好的例子,可以通過運行com.danga.MemCached.test. TestMemcached來查看資料存入和取出情況,這裡也貼出其代碼:

package com.danga.MemCached.test;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;import org.apache.log4j.*;public class TestMemcached {public static void main(String[] args) {// memcached should be running on port 11211 but NOT on 11212BasicConfigurator.configure();//快取服務器地址,多台伺服器則以逗號隔開,11211為memcached使用的連接埠號碼String[] servers = { “localhost:11211″ };//得到一個連結池對象並進行一些初始化工作SockIOPool pool = SockIOPool.getInstance();pool.setServers( servers );pool.setFailover( true );pool.setInitConn( 10 );pool.setMinConn( 5 );pool.setMaxConn( 250 );//pool.setMaintSleep( 30 );pool.setNagle( false );pool.setSocketTO( 3000 );pool.setAliveCheck( true );pool.initialize();MemCachedClient mcc = new MemCachedClient();// turn off most memcached client logging://Logger.getLogger( MemCachedClient.class.getName() ).setLevel( com.schooner.MemCached.Logger. );//以下是資料寫入和取出操作例子for ( int i = 0; i < 10; i++ ) {boolean success = mcc.set( “” + i, “Hello!” );String result = (String)mcc.get( “” + i );System.out.println( String.format( “set( %d ): %s”, i, success ) );System.out.println( String.format( “get( %d ): %s”, i, result ) );}System.out.println( “\n\t — sleeping –\n” );try { Thread.sleep( 10000 ); } catch ( Exception ex ) { }for ( int i = 0; i < 10; i++ ) {boolean success = mcc.set( “” + i, “Hello!” );String result = (String)mcc.get( “” + i );System.out.println( String.format( “set( %d ): %s”, i, success ) );System.out.println( String.format( “get( %d ): %s”, i, result ) );}}}

MemCached的java用戶端執行個體

package com.danga.MemCached.test;  import com.danga.MemCached.*; public class TestMemcached {  public static void main(String[] args) {   /*初始化SockIOPool,管理memcached的串連池*/   String[] servers = { "192.168.105.217:11211" };   SockIOPool pool = SockIOPool.getInstance();   pool.setServers(servers);   pool.setFailover(true);   pool.setInitConn(10);   pool.setMinConn(5);   pool.setMaxConn(250);   pool.setMaintSleep(30);   pool.setNagle(false);   pool.setSocketTO(3000);   pool.setAliveCheck(true);   pool.initialize();   /*建立MemcachedClient執行個體*/   MemCachedClient memCachedClient = new MemCachedClient();   for (int i = 0; i < 10; i++) {    /*將對象加入到memcached緩衝*/    boolean success = memCachedClient.set("" + i, "Hello!");    /*從memcached緩衝中按key值取對象*/    String result = (String) memCachedClient.get("" + i);    System.out.println(String.format("set( %d ): %s", i, success));    System.out.println(String.format("get( %d ): %s", i, result));   }  } } 

1.解壓(本例中解壓到c:\memcached)。
2、在命令列狀態下輸入: c:\memcached\memcached.exe -d install 。至此memcached已經安裝成windows服務
3、在命令列下輸入: c:\memcached\memcached.exe -d start 以啟動memcached服務。當然也可以選擇在windows服務中啟動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.