memcachedの有効期限の小ネタ

久しぶりの投稿。


memcachedでテストしてみたので結果だけ。
memcachedの有効期限についてだが、2,592,000(30日分)以上設定できないというのを知識的に知っていたが、試してみた。


ちなみにWindows版にて・・・
versionは1.2.4。最新見てみると1.4.5だって、そんなに進んでんの・・・。


で、telnet上で

set test1 0 0 5
test1
STORED

set test2 0 2592000 5
test2
STORED

set test3 0 2592001 5
test3
STORED



と3件データを投入してみた。
test3はエラーにならないのね。。。
それでもって、それぞれgetしてみると。。。

get test1
VALUE test1 0 5

get test2
VALUE test2 0 5

get test3
END



おおお、エラーにはならなかったtest3だが、格納されていない。
なるほどぉ。
こういう動きをするのか。。。
ちなみに、日付を30日進めて、getしたところ、

get test1
VALUE test1 0 5

get test2
END

get test3
END



となった、有効期限は効いているみたい。
test2がなくなったからね。
でもって、expire = 0で設定した場合、30日で消えるとかいうことはなさそう。
90日まで進めてみたけどちゃんと残っていた。
LRUであふれて消えるまで残っているみたいです。


なかなか、有意義なテストだった・・・
って、もしかして常識ですか・・・

memcached session managerをtomcatで使う

webアプリケーションでsessionの情報をmemcachedへ自動で保存する方法を調べてみた。
英語のサイトしか見つからなかったが、どうやら、こいつがいけるっぽい。
Google Code Archive - Long-term storage for Google Code Project Hosting.


Tomcatに設定してフェールオーバー対策まで行ってくれる。
自動で
セッションを見て、メモリ上になかったら、memcachedに見に行く。
そんな感じかな。
まだ、ぜんぜん使えていないが、設定だけは行って起動したら、動いたっぽい。


サイトの受け売りだけど、
catalina_home\libに

を置く。
serializeの方法によって置くjarファイルが増えるらしいけど、とりあえず、今回はこれでやってみる。
で、
catalina_home\conf\server.xmlに追記



これは、上記ページままだけど、自分は transcoderFactoryClassの行は消しました。
で、実行すればよいそうで、実行してみたら、
起動はしたけど、エラー。

2010-02-14 22:57:49.019 INFO net.spy.memcached.MemcachedConnection: Reconnectin
g due to failure to connect to {QA sa=localhost/127.0.0.1:11211, #Rops=0, #Wops=
0, #iq=0, topRop=null, topWop=null, toWrite=0, interested=0}
java.net.ConnectException: Connection refused: no further information
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:574
)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.ja
va:295)
at net.spy.memcached.MemcachedConnection.handleIO(MemcachedConnection.ja
va:193)
at net.spy.memcached.MemcachedClient.run(MemcachedClient.java:1458)

当然です。
memcachedを起動していなかったから。
というかインストールも忘れてた。
で、インストールしようとして、本日の別記事、memcached for windowsを64bitで動かす - unrockoの日記へと流れます。
結論から言うと、memcachedインストールできなくて、テストできませんでした。
だめだめだぁ。
明日だめなら、32-bit版でテストしよ。
どうせ、Linuxでやることになるだろうし。

memcached for windowsを64bitで動かす

以前、memcache for windowsをインストールして実行したが、
64-bitのwindowsマシンに入れたら、インストールと起動ができなかった。

C:\Tools\memcached-1.2.4-Win32-Preview-20080309_bin>memcached.exe -d install
failed to install service or service already installed

と出る。
起動しようとすると

C:\Tools\memcached-1.2.4-Win32-Preview-20080309_bin>memcached.exe -d start
failed to start service

と出る。
32-bit版を使用したので当然といえば当然か。
ということで、64bitを探すことに。
google先生に聞くと、こんなサイトを見つけた。
Google グループ


>>>>>>> I would not recommend using any version prior to 1.2.5 on the windows
>>>>>>> platform, we've had issues with all of them.

>>>>>>> You can get a 1.2.5 binary here:
>>>>>>> http://code.jellycan.com/memcached/

>>>>>>> Or here:
>>>>>>> http://code.google.com/p/beitmemcached/downloads/list

>>>>>>> We've been running that on both Server 2003 64bit and Server 2008
>>>>>>> 64bit without any problems.

この辺の話題をみると、1.2.5では、問題なく動くぜ!
って言ってるぽい。
ので、
Google Code Archive - Long-term storage for Google Code Project Hosting.
ここから、ダウンロードして解凍、そして実行してみる。

C:\Tools\Memcached_1.2.5>memcached.exe -d install
failed to install service or service already installed

C:\Tools\Memcached_1.2.5>memcached.exe -d start
failed to start service

だめじゃねーか。
えー
今日はだめだ。。。
明日、調査してみよう。

スーケラビリティの関連の本を3冊も買ってしまった。

仕事でWebサイトの分散化をやることになり、大量に本を買ってしまった。


ううう。
こりゃ、今月も冷や飯だぁ。。。


まず、自分の中では敷居高すぎのHadoop
しかも、O'REILLY。
これ、一回いじっただけじゃ正直なにができるのかよく分からなかった。
MapReduceをもう一度基礎から勉強しないと理解できないなぁ。
Googleの人ってすごい頭してるなぁ。
読みながらブログにフィードバックしていこう。。。

Hadoop

Hadoop



で、2冊目が、またまたO'REILLYのWebサイトのスケーラブルの本。
立ち読みしたら意外と読みやすかった。
O'REILLYが読みづらいってのは、昔の話?
ずっと敬遠してたからなぁ。
はじめにを読むと、インフラの話がメインらしい。
自分の弱点を補うためにもがんばらないと。
スケーラブルWebサイト

スケーラブルWebサイト



で、最後が、、、またまた、O'REILLYじゃないか!!!
今、気がついた!
これ、人気みたいですね。
本屋でも一押しでした。
ソフトウェアアーキテクトが知るべき97のこと

ソフトウェアアーキテクトが知るべき97のこと



ということで、3冊全部O'REILLYだったという訳で、そりゃ高いわな
敷居高そうだけど、まじめに少しずつ進めて体得したいものだなぁ。
がんばれ。飽き性な自分。

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



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

SmartQ5をこうてしもうた

CoviaのAndroidガジェットSmartQ5を買って、本日届いたのでとりあえず、レビューしてみる。


まぁ、Amazonのレビューを見ていたので、期待と不安が入り混じった、、、
いや、不安のほうがはるかに大きかったわけだが、
箱を開けてみると。。。


第一印象は、ボディが安っぽい。
という感じか。。。
あと、四角なボディがサイズ以上に大きなイメージを与えてる。
iPhoneと重さを比べても、重いはずなのに、なぜか軽く感じてしまうのは、見た目の安っぽさのせいか・・・。


こんな感じ






大きさをiPhoneと比較してみたのがこんな感じ






まぁ、開発用に買ったのだから、日常の操作性などはあまり求めていない。
いないが、それなりに使えるものであって欲しいという願望はあった。
実際、起動してみると、、、
一瞬変な音がした。
ディスクが回るような、キュインという変な音が・・・


気にしない気にしない。


で、起動したら、すぐ落ちた。。。
きっと、操作ミスだろう。。。
もう一度起動したら、ちゃんと起動した。


ここで、初めて分かったのだが、というか、ちゃんと書いてあったし、Coviaのサイトの画像にもちゃんとスタイラスがあったのだが、あまり見てなかった。
そう。
抵抗膜方式なのである。
いや、誰が悪いということはなく、自分が見落としていただけなのだが、
勝手に、静電容量方式と勘違いしていた。
いや、それが当たり前と、勝手に認識していたに過ぎない。


画面を指でいじって、あれこれやっている様はなんとも情けない。
ということで、下にスタイラスが入っているのを発見していじってみると、さすがに動きが指よりもいい。
当たり前だが。。。


wifiの設定は問題なく行われ、ホームページも確認できた。
動作は少し鈍い感じがする。
それは、Coviaのサイトにも書いてあったが課題らしい。
ファームウェアを最新にしていないっていうのもあるから、あまり言わないようにしよう。


まずは、SDカードを購入してファームウェアの更新が必須事項かな。


Androidのバージョンだが、どうやら1.5らしい。
1.6へあげれるのかな?
もう少し調べていろいろ試してみよう。


感想としては、本気で実用に使うというのはあまり向いてないと思う。
ネットワークもwifiのみなので、外で使うのにあまり有効ではないし、家にいたらパソコンあるからあまり用途がない。
パソコンない人が家にwifi接続環境があるとも思えないし。
自分としては、開発用としてしか使う用途はないな。
でも、Android1.6にできなかったら、厳しいなぁ。


あと、Coviaのサイトはいい感じ。
毎月ファームウェア更新って書いてあるし、実際2009年12月28日が最終になってるけど、ちゃんと出されてるっぽいし、FAQなんかも、割と親切。
開発端末と割り切れば、楽しめるかも。

Covia SmartQ5 (Android 日本語版)

Covia SmartQ5 (Android 日本語版)