【メモ】PEAR::Cache_Liteの生存期間について誤解してたこと(追記あり) | mutter
いろいろ考えたのだけど、個人プロジェクトなんだし好奇心優先って事でKyotoCabinetとそれを扱うKyotoTycoonを入れて、PECL::Memcachedを利用して接続してみることにしました。PHP側については、OpenPEARの方に「Net_KyotoTycoon」と言うライブラリもアップされているのですが、まぁ今は良いかなと言うことで。
Net_KyotoTycoon \ パッケージ \ Openpear
KyotoTycoon の PHP 版を作った – Heavens hell
と言うわけで、以下インストール。
KyotoCabinetのインストール
# yum install -y lzo-devel lzma-devel xz-devel
# wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.74.tar.gz
# tar zxvf kyotocabinet-1.2.74.tar.gz
# cd kyotocabinet-1.2.74
# ./configure --prefix=/usr/local/kyotocabinet --enable-lzo --enable-lzma
# make
# make install
# echo /usr/local/kyotocabinet/lib > /etc/ld.so.conf.d/kyotocabinet.conf
# ldconfig
最新版はこの辺に:
http://fallabs.com/kyotocabinet/pkg/
参考:
KyotoTycoon + KyotoCabinetのベンチマーク – 逆襲のWebエンジニア
KyotoTycoonのインストール
# yum install lua-devel.x86_64
# wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.55.tar.gz
# tar zxvf kyototycoon-0.9.55.tar.gz
# cd kyototycoon-0.9.55
# ./configure --prefix=/usr/local/kyototycoon --with-kc=/usr/local/kyotocabinet --enable-lua
# make
# make install
# echo /usr/local/kyototycoon/lib > /etc/ld.so.conf.d/kyototycoon.conf
# ldconfig
最新版はこの辺に:
http://fallabs.com/kyototycoon/pkg/
参考:
KyotoTycoon + KyotoCabinetのベンチマーク – 逆襲のWebエンジニア
memcachedとPecl::Memcachedをインストール
# yum install -y memcached
# yum install -y php-pecl-memcached
yumは便利ですね。といっても多分memcached要らないけど…
KyotoTycoonをサービスに登録して起動
# cp lab/ktservctl /usr/local/sbin/
# cp lab/ktservctl /etc/init.d/ktserver
# vi /etc/init.d/ktserver
起動スクリプトを編集
chkconfig用設定を追加。#----------------------------------------------------------------
# Startup script for the server of Kyoto Tycoon
# chkconfig: - 80 20
# description: Kyoto Tycoon - KVS Database
#----------------------------------------------------------------
memcached として起動するように設定を変更。
#miscopts="-oat"
#ulogdir="$basedir/ulog"
#ulim=1g
#sid=1
↓
miscopts="-plsv /usr/local/kyototycoon/libexec/ktplugservmemc.so -plex port=11211#opts=f"
ulogdir="$basedir/ulog"
ulim=1g
sid=1
PATHに追加
PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/kyototycoon/bin"
サービスに追加
# chkconfig --add ktserver
起動
# service ktserver start
参考:
suz-lab – blog: "Kyoto Tycoon (memcached plugin)"を"CentOS 6.2"にインストール
以上でインストールは終わりです。
PECL::Memcachedで接続してみる
以下、超簡単なサンプルプログラム。$m = new Memcached();
$m->set('foo', 100, 10);
var_dump($m->get('foo')); //(int) 100
特に問題は無いようです。生存期間もきちんと動いていて、上記スクリプトで設定したキャッシュは10秒後にきっちり削除されます。いや、キャッシュって普通こうだよね…
ちなみに…
このキャッシュはTumblr Thumnailsで既に実装済みです。安定してるようです。追記:2012/06/04
DQNEOさんから以下の指摘を受けました。-plexの指定が効いてない気がします。この書き方だとポート番号変えてもデフォルトの11211で起動します。-plex port=11222#opts=f とクォートなしにしたらいけました。nplll.com/archives/2012/…@nobodyplace
— DQNEOさん (@DQNEO) 6月 3, 2012
こちらで検証もされています。
[シェルスクリプト] めちゃめちゃ気づきにくいバックスラッシュによるバグ – DQNEO起業日記
あーなるほど確かに。
こちらでも動作を確認しましたので、記事を修正しました。
DQNEOさんご指摘ありがとうございました。