Mac OSX でKyotoTycoonを使ってみる
Macで永続的キャッシュサーバkyoto-tycoon を使ってみます。プラグインを使えばmemcached互換プロトコルも利用出来るKVSです。 詳しくは以前書いたエントリからどうぞ。
インストール
Homebrew を使うと簡単にkyoto-cabinet及びkyoto-tycoonがインストール出来ます。
$ brew search kyoto kyoto-cabinet kyoto-tycoon $ brew install kyoto-cabinet $ brew install kyoto-tycoon
installすると/usr/local/bin に ktserver, ktremotemgr 等関連するプログラムがインストールされます。 実体は/usr/local/Cellar/kyoto-tycoon/0.9.52/bin/以下に入ります。
memcached 互換プロトコルを使う
memcached プロトコルを理解出来るようにするプラグインが/usr/local/Cellar/kyoto-tycoon/0.9.52/libexec/に作成されるのでシンボリックリンクを張ります。
$ sudo ln -s /usr/local/Cellar/kyoto-tycoon/0.9.52/libexec/ktplugservmemc.dylib /usr/local/lib/ktplugservmemc.dylib
ktserver起動スクリプト
以下の例では起動に必要なオプションをベタに書いてるので自分の環境に合ったオプションを設定して下さい
/usr/local/bin/ktserverstart
#!/bin/sh PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin; export PATH basedir="/usr/local/bin/ktserver -port 1978 -le -pid /var/ktserver/pid -tout 10 -plsv /usr/local/lib/ktplugservmemc.dylib -plex opts=f -log /var/ktserver/log /var/ktserver/casket.kch#opts=l#bnum=2000#msiz=8m#dfunit=8" argument="$1" case "$argument" in start) sleep 5 # wait for avoid loading collision. if [ -e /var/ktserver/pid ] then echo "" else echo "Starting ktserver...." exec $basedir fi ;; stop) echo "Stopping ktserver" killall ktserver ;; *) echo "Usage: $0 {start|stop}" ;; esac exit 0
起動チェック
念のため作ったstartスクリプトでkyoto-tycoonが起動できるかコンソールから試してみます。
$ sudo /usr/local/bin/ktserverstart start
kyoto-tycoonをデーモンとして起動させる為のプロパティリストを次の名前で作成する。このファイルはMac OSX の LaunchDaemon から利用されます。
/Library/LaunchDaemons/homebrew.ktserver.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>homebrew.ktserver</string> <key>ProgramArguments</key> <array> <string>/usr/local/bin/ktserverstart</string> <string>start</string> </array> <key>OnDemand</key> <false/> </dict> </plist>
上記プロパティリストを用意できたらloadしてstartすればktserverが起動されます。
ロード
$ sudo launchctl load /Library/LaunchDaemons/homebrew.ktserver.plist
アンロード
$ sudo launchctl unload /Library/LaunchDaemons/homebrew.ktserver.plist
デーモンスタート
$ sudo launchctl start homebrew.ktserver
デーモンストップ
$ sudo launchctl stop homebrew.ktserver
KyotoTycoonに接続する
ktserver と一緒にインストールされたコマンドラインからアクセスするツールを使いktserverに接続してみる。
key1のデータとしてvalue1を登録
$ ktremotemgr set key1 value1
key1のデータを取得
$ ktremotemgr get key1 value1
key1のデータを削除
$ ktremotemgr remove key1
登録されているkeyの一覧を全取得
$ ktremotemgr list
リモート接続してみる
リモートからhttpプロトコルを使ってktserverにアクセスする事も出来ます。 port:1978 パス/rpc/* にアクセスすればおkです。
http接続例
$ curl "http://localhost:1978/rpc/set?key=foo&value=bar" $ curl "http://localhost:1978/rpc/get?key=foo" value bar $ curl "http://localhost:1978/rpc/remove?key=foo" $ curl "http://localhost:1978/rpc/get?key=foo" ERROR DB: 7: no record: no record
created: