PC-UNIXに関する記事など
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 プロトコルを理解出来るようにするプラグインが/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
以下の例では起動に必要なオプションをベタに書いてるので自分の環境に合ったオプションを設定して下さい
/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
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です。
$ 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
トラックバックURL: http://www.omakase.org/mt/mt-tb.cgi/94
コメントする