ラベル web の投稿を表示しています。 すべての投稿を表示
ラベル web の投稿を表示しています。 すべての投稿を表示

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のものに変更するだけで、動きました。

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

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

memcacheをpythonから叩いてみたので、めもめもφ(.. )メ
環境はMac OS X(Snow leopard)です。memcacheはMacportでインストールしました。

pythonのvirtualenvの作成

既存のpythonの環境を汚さないために、まずはいつも通りvirtualenvを作ります。

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

memcache-testといvirtualenvを作って、アクティベートしました。


memcacedの実行

テストの為にmemcachedを立ち上げます

$ memcached -p 11211 -m 64m -vv

オプションの意味は待ち受けのポートが11211で、サイズ64Mで、詳細ログを表示します。


python-memcacheのインストール

python-memcached をインストールします。(ftp.tummy.com:/pub/python-memcached/)

$ curl -O ftp://ftp.tummy.com/pub/python-memcached/python-memcached-latest.tar.gz
$ tar xzvf python-memcached-latest.tar.gz
$ cd python-memcached
$ python setup.py install

サンプルコード

import memcache

client = memcache.Client(["localhost:11211"])

client.set("test", "hello world")
value = client.get("test")

print value

テスト

$ python memcache-test.py

などと実行して、”hello world”と表示されれば正常です。

"None"と表示されれたときはmemcacheとの接続がうまくいっていません。ホストやポートが正しいか確認してください。

python-memcacheのおおざっぱな使い方

memcache.Clientは、memcacheクライアントオブジェクトで、コンストラクタにホスト名のリストを渡せばいいらしい。

Clientのメソッドにsetやdeleteやgetなどがあります。

client.set(key, value)で、memcacheに値を代入。

client.get(key)で、keyに対応するvalueを取得。

client.delete(key)で、対応するkeyをmemcache上から削除。

簡単ですね。