memcachedをwindowsに入れてJavaで操作してみた

メモとして


まず、memcachedwindows版を落とす。
http://www.splinedancer.com/memcached-win32/


memcached-1.2.4-Win32-Preview-20080309_bin.zip
と言うファイルがダウンロードできるので、解凍する。


インストール方法は、
コマンドラインから以下のコマンドを実行するよう

> c:\memcached-1.2.4-Win32-Preview-20080309_bin\memcached.exe -d install



サーバーの起動方法は、
コマンドラインから以下のとおり

> c:\memcached-1.2.4-Win32-Preview-20080309_bin\memcached.exe -d start



とりあえず、タスクマネージャーを確認するとプロセスは起動しているよう。
なので、テストしてみる。


コマンドプロンプトからtelnetでつないで操作する。

接続
> telnet localhost 11211

接続できたら・・・

ステータス確認
> stats
STAT pid 3804
STAT uptime 732
STAT time 1265011436
STAT version 1.2.4
STAT pointer_size 32
STAT curr_items 0
STAT total_items 0
STAT bytes 0
STAT curr_connections 1
STAT total_connections 2
STAT connection_structures 2
STAT cmd_get 0
STAT cmd_set 0
STAT get_hits 0
STAT get_misses 0
STAT evictions 0
STAT bytes_read 28
STAT bytes_written 14
STAT limit_maxbytes 67108864
STAT threads 1
END

格納テスト
> set unrocko 0 0 5
test1
STORED
※最初の0はフラグ、2番目は格納期限 0は無期限、最後の5は5byteの文字を格納するよってことらしい

取り出しテスト
> get unrocko
VALUE unrocko 0 5
test1
END



memcachedへの格納は行われている。
問題なし。


次にJavaからアクセスしてみる。
まず、以下の2つのjarが必要



で、ソースは以下の通り
MemCachedClient.java

package jp.co.zealot.iwashita.memcached.test;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcachedTest {

	public static void main(String[] args) {
		
		SockIOPool pool = SockIOPool.getInstance();
		pool.setServers(new String[] {"localhost:11211"});
		pool.initialize();
		
		MemCachedClient client = new MemCachedClient();
		
		client.set("hoge", "HogeHoge");
		client.set("piyo", "PiyoPiyo");
		client.set("fuga", "FugaFuga");
		
		String name = (String) client.get("hoge");
		
		System.out.println("name:" + name);
		
		String str = (String) client.get("puri");
		
		System.out.println("str1 : " + str);
		
		if (str == null) {
			client.set("puri", "PuriPuri");
		}
		
		str = (String) client.get("puri");
		
		System.out.println("str2 : " + str);
		
	}
}



結果は

name:HogeHoge
str1 : null
str2 : PuriPuri



大丈夫な感じ。
まぁ、そんな難しいことじゃないから、どちらかというとどう設計して、どう活用するかが難しいところかな。