プログラマとプロマネのあいだ

プログラマもやるし、プロマネもやるし、たまに似非アーキとか営業っぽいこともやる

jmemcachedを動かしてみる

サーバ側

□インストール

http://thimbleware.com/maven/com/thimbleware/jmemcached/jmemcached-cli/0.9.1/
から
jmemcached-cli-0.9.1-main.jar
をダウンロード

□起動

java -jar jmemcached-cli-0.9.1-main.jar

(ポート番号を変えたい場合は)

java -jar jmemcached-cli-0.9.1-main.jar -p 9000

クライアント側

□インストール

http://github.com/gwhalin/Memcached-Java-Client/downloads
から
java_memcached-release_2.5.1.zip
をダウンロード

□起動

プログラムからアクセスする

□ソース(テストコードから拝借&shutDown処理を追加)
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();
		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( 1000 ); } 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 ) );
		}

		// これを追加しないとサーバ側でエラーになる。。
		pool.shutDown();
	}
}
コンパイル

javac -classpath java_memcached-release_2.5.1.jar;log4j.jar TestMemcached.java

□実行

java -classpath java_memcached-release_2.5.1.jar;log4j.jar;. TestMemcached

□実行結果

set( 0 ): true
get( 0 ): Hello!
set( 1 ): true
get( 1 ): Hello!
set( 2 ): true
get( 2 ): Hello!
set( 3 ): true
get( 3 ): Hello!
set( 4 ): true
get( 4 ): Hello!
set( 5 ): true
get( 5 ): Hello!
set( 6 ): true
get( 6 ): Hello!
set( 7 ): true
get( 7 ): Hello!
set( 8 ): true
get( 8 ): Hello!
set( 9 ): true
get( 9 ): Hello!

-- sleeping --

set( 0 ): true
get( 0 ): Hello!
set( 1 ): true
get( 1 ): Hello!
set( 2 ): true
get( 2 ): Hello!
set( 3 ): true
get( 3 ): Hello!
set( 4 ): true
get( 4 ): Hello!
set( 5 ): true
get( 5 ): Hello!
set( 6 ): true
get( 6 ): Hello!
set( 7 ): true
get( 7 ): Hello!
set( 8 ): true
get( 8 ): Hello!
set( 9 ): true
get( 9 ): Hello!

というわけで

じゃばじゃばなプロジェクトにはいいかも。