読者です 読者をやめる 読者になる 読者になる

TTはじめました

TokyoTyrant

あの人も、この人Tokyo Tyrantを使っているということで、僕も試してみることにした。

インストール

SourceForgeのダウンロードページより最新版のTokyo Cabinet, Tokyo Tyrantのダウンロード。

$ wget "http://downloads.sourceforge.net/tokyocabinet/tokyocabinet-1.2.5.tar.gz?modtime=1209093521&big_mirror=0"
$ tar xzf tokyocabinet-1.2.5.tar.gz
$ cd tokyocabinet-1.2.5
$ ./configure
$ make
$ sudo make install
$ wget "http://downloads.sourceforge.net/tokyocabinet/tokyotyrant-0.9.13.tar.gz?modtime=1208680070&big_mirror=0"
$ tar xzf tokyotyrant-0.9.13.tar.gz
$ cd tokyotyrant-0.9.13
$ ./configure
$ make
$ sudo make install

Tokyo Tyrantのサーバを立ち上げる

今はテストしてみたいだけなので、フォアグラウンドでTokyo Tyrantを立ち上げる。

$ ttserver

細かい設定は後で研究する。

データの取得・保存・削除

プロトコルがmemcached互換とのことなので、python-memcachedで試してみる。

>>> import memcache
>>> tt = memcache.Client(["127.0.0.1:1978"])
>>> tt.set("spam", "SPAM")
0
>>> tt = memcache.Client(["127.0.0.1:1978"])
>>> tt.set("spam", "SPAM")
True
>>> tt.get("spam")
'SPAM'
>>> tt.delete("spam")
1
>>> tt.get("spam") is None
True

HTTP経由でアクセスするならば、

>>> from httplib2 import Http
>>> Http().request("http://127.0.0.1:1978/egg", "PUT", body="EGG")[1]
'Created\n'
>>> Http().request("http://127.0.0.1:1978/egg", "GET")[1]
'EGG'
>>> Http().request("http://127.0.0.1:1978/egg", "DELETE")[1]
'OK\n'
>>> Http().request("http://127.0.0.1:1978/egg", "GET")[1]
'Not Found\n'

思ったより簡単に利用できる。


余談ながら、PythonでHTTPプロトコルを扱うならばhttplib2を使うべき(結果をどうしてもファイル型オブジェクトとして取得したい場合を除く)。こいつは、キャッシュコントロール、認証、プロクシ、タイムアウト等の扱いが本当に優れている。
まったく余談ながら、python-users.jpの運営者は「モダンなPython入門」として、こういったことを発信していくべきではないか。みんなも、python-users.jpの放置っぷりに苦情を申し立てるといいと思うよ!