程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實例講授散布式緩存軟件Memcached的Java客戶端應用

實例講授散布式緩存軟件Memcached的Java客戶端應用

編輯:關於JAVA

實例講授散布式緩存軟件Memcached的Java客戶端應用。本站提示廣大學習愛好者:(實例講授散布式緩存軟件Memcached的Java客戶端應用)文章只能為提供參考,不一定能成為您想要的結果。以下是實例講授散布式緩存軟件Memcached的Java客戶端應用正文


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 11212

BasicConfigurator.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辦事中啟動

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved