2013/01/26

Kyoto Tycoonの導入とperlからのアクセス (on Fedora 17 and Ubuntu)

Kyoto CabinetとKyoto Tycoonを試してみました。

以前から気になりつつも、ちょっと今更になってしまったのですが・・・
開発中のWebアプリケーションで使いたい!という動機です(笑)
Fedora 17 および Ubuntu 12.04で以下の手順による動作を確認できました。

まず、必要なパッケージをインストールします。
$ sudo yum install libcurl gcc make zlib-devel
尚...Ubuntuなど(Debian系)では次のような感じです:
$ sudo apt-get install curl gcc make zlib1g-dev libbz2-dev build-essential

次に、Kyoto Cabinetをインストールします。
$ wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz
$ tar zxf kyotocabinet-1.2.76.tar.gz
$ cd kyotocabinet-1.2.76/
$ ./configure
$ make 
$ sudo make install
$ ../
その次に、Kyoto Tycoonをインストールします。
(Kyoto Tycoonは、Kyoto Cabinetをネットワークで扱うためのインターフェイスです。)
$ wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.56.tar.gz
$ tar zxf kyototycoon-0.9.56.tar.gz
$ cd kyototycoon-0.9.56/
$ ./configure
$ make 
$ sudo make install
さらに、管理用のコマンドを使えるようにスクリプトをコピーしておきます。
$ sudo cp lab/ktservctl /usr/local/sbin/
$ sudo cp lab/ktservctl /etc/rc.d/init.d/ktserver
(【Ubuntuの場合】 /etc/rc.d/init.d/ → /etc/init.d/ ですので、注意。以下も同様に読み替えてください。)

またこのスクリプトを一部編集しておきます。
$ sudo vi /etc/rc.d/init.d/ktserver
#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Kyoto Tycoon
# chkconfig: - 80 20
#----------------------------------------------------------------

〜〜〜
PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin"
〜〜〜
(2行目付近に、このように、chkcondigのための行を追加。 また31行目付近のPATHに、/usr/local/bin を追加しておきます。) [2013/02/10:追記]

共有ライブラリパスに/usr/local/libを含めていなければ、追加しておきます。
$ vi /etc/ld.so.conf
〜〜〜
/usr/local/lib
$ sudo ldconfig
これで完了です。

では...早速、Kyoto Tycoonを起動してみます。
$ sudo service ktserver start
または
$ sudo ktserver 

これで...コンソール上にログが表示されたら、稼働中です。

とりあえず試しに、perlでスクリプトを書いて読み書きしてみることに。
ありがたいことに、Cache::KyotoTycoonというモジュールがあるので、とても簡単に扱うことができます。

まずは、cpan/cpanmで、Cache::KyotoTycoonをインストールします。
$ cpanm Cache::KyotoTycoon
あとは、スクリプトを書いて...実行。
use Cache::KyotoTycoon;

# KyotoTycoonに接続
my $kt = Cache::KyotoTycoon->new(
    host => '127.0.0.1',
    port => 1978,
);

# キー'foo'で 文字列'bar'を保存
$kt->set('foo', 'bar');
# 読み出してみる
print $kt->get('foo') ."\n";

# 時限削除機能もあるので試してみる
$kt->set('foo2', 'bar', 2); # 2sec
# 読みだしてみる
print $kt->get('foo2') . "\n"; # OK
# 2秒〜ほど待つ
sleep(2500);
# もう一度、読みだしてみる
print $kt->get('foo2') . "\n"; # 時限削除されているので空になる。

うーん!とってもシンプルですし、時限削除は便利ですね。
まさに...キャッシュのためにももってこいなKVSだといえます。
ベンチマークの類はまだしてないですが。メモリにも優しいそうです。

また、memcached互換なので既存のモジュールも応用できるそうです。

[2013/03/19 追記]
Cache::KyotoTycoon v0.14で行われた修正にともない、
コンストラクタ(Cache::KyotoTycoon->new)内でdbパラメータを与えると
リクエストがエラーとなってしまうようです。

[2013/05/29 追記]
パッケージ類のインストール手順を追加しました。
また、Ubuntu 12.04でもこの手順で動作を確認しているため、追記 および タイトルを変更しました。


参考にさせていただいたページ (感謝 m(_ _)m♪):

0 件のコメント:

コメントを投稿

お気軽にコメントをお寄せください m(_ _)m♪
"コメントの記入者"欄から[名前/URL]を選ぶと、登録なしでコメント投稿していただけます。