TokyoTyrantをpythonからたたく@Mac OS X

memcacheにつづいてTokyoTyrantもpythonからたたいてみました。

ちょっとハマった所があったので、備忘録としてまとめておきますー。

TokyoTyrantのインストール

MacPortsを使えば一発でした。

$ sudo port install tokyotyrant

TokyoTyrantの起動

TokyoTyrantの起動については、デフォルトで付いてきたttservctlという起動スクリプトを使ってデーモンで動かすことも出来ますし、自分ttserverコマンドで起動することも出来ます。

ttservctlを使う場合は

$ sudo tservctl start

で起動出来ます。デフォルトでは/var/ttserverの下に関連ファイルが保存されました。

しかし、初期設定ではログを吐いてくれません。ttservctlのスクリプトの

#logfile="$basedir/log"

という行のコメントを外し、TokyoTyrantを再起動することで/var/ttserver/logにログが記録されるようになりました。


ただローカルでテストする場合に、わざわざデーモンで起動するのもなんなんで、ttserverでフォアグランドで起動してテストすることにしました。

ttserverの場合は

$ ttserver -port 1978 hoge.tch

とコマンドを叩けば起動します。

portオプションで待ち受けポートが指定できるようです。
hoge.tchはデータを保存するファイル名(データベース名?)です。
注意点として、このファイル名の拡張子は.tchでないとダメなようです。他の拡張子や拡張子なしにした場合、TokyoTyrantの起動はするのですが、読み書き時にエラーを吐きやがります... (T-T )

virtualenvの作成

例のごとくvirtualenvを作って、pythonの環境をいじっても影響が最小限にとどまるようにします。

$ virtualenv tt-test
$ source tt-test/bin/activate

pytyrantのインストール

$ easy_install pytyrant

easy_installで大丈夫でした。python-memcacheはeasy_installが出来なかったのですが。。。

ソースはsvnで

$ svn co http://pytyrant.googlecode.com/svn/trunk/ pytyrant

で取ってくることができました。

サンプルコード

from pytyrant import PyTyrant

client = PyTyrant.open("localhost", 1978)

client["hoge"] = "hello world"

print client["hoge"]

del client["hoge"]

テスト

$ python tt-test.py

と実行して"hello world"と出れば正常みたいです。

PyTyrant.open(ホスト名, ポート番号)でクライアントオブジェクトを生成できるみたいです。

client["key"] で参照、client["key"] = value でデータの保存、del client["key"] でキーの削除が出来るみたいです。

memcacheクラアントからたたいてみる

TokyoTyrantは、memcacheのプロトコルに互換性があるらしいです。

python-memcacheを使って、ホストとポートをTokyoTyrantのものに変更するだけで、動きました。

これは便利かもー ( ̄ー ̄)

0 コメント:

コメントを投稿