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 コメント:
コメントを投稿