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:

Back to top