perl 版の memcached の client を使ってみる。
速度比較の必要もあるので、Perl 版の memcached の
クライアントを使ってみる。
Cache-Memcached-1.30 - client library for memcached (memory cache daemon) - metacpan.org
上記は、第1回 memcachedの基本:memcachedを知り尽くす|gihyo.jp … 技術評論社
によると、memcached の作成者による perl client らしい。
記事を見ながら出来るので、こっちを使ってみる。
CRC32*1 が必要らしいので、
String::CRC32 - Perl interface for cyclic redundancy check generation - metacpan.org
上記から取得。
う。make コマンドなんてインストールしてないぞ。
ぐぐったところ、MinGW を使うのが最近ではファッショナブルなのよ!ということなので、
MinGW | Minimalist GNU for Windows
より取得して、インストール。ミニマムインストールだと
make がデフォルトで選択されてないので、make を
インストール中に選択しておく。
展開した、CRC32 のディレクトリにいって、
>perl Makefile.PL Set up gcc environment - 3.4.5 (mingw-vista special r3) Checking if your kit is complete... Looks good Writing Makefile for String::CRC32
おけおけ。
>mingw32-make.exe Makefile mingw32-make.exe: *** No rule to make target `C:\Perl\libConfig.pm', needed by `Makefile'. Stop.
なにこれーーー。
なんだろうなあ、、、だからwindows面倒くさいんだよな・・・。
多分環境変数の設定か何かが中途半端なのかもしれないけど、時間使いたくないので、場当たり的に、
Makefile の中の DIRFILESEP の行を以下のように修正して再実行してみる。
DIRFILESEP = \\
再実行。
>mingw32-make.exe Makefile install mingw32-make.exe: `Makefile' is up to date. cp CRC32.pod blib\lib\String\CRC32.pod cp CRC32.pm blib\lib\String\CRC32.pm C:\Perl\bin\perl.exe C:\Perl\lib\ExtUtils\\xsubpp - ...中略... Installing C:\Perl\site\lib\String\CRC32.pm Installing C:\Perl\site\lib\String\CRC32.pod Appending installation info to C:\Perl\lib/perllocal.pod
うごいた。若干実行ログの内容に疑惑が無いでもないが、面倒なので気にせず次にいく。
>perl Makefile.PL Set up gcc environment - 3.4.5 (mingw-vista special r3) Checking if your kit is complete... Looks good Writing Makefile for Cache::Memcached >mingw32-make.exe Makefile install mingw32-make.exe: *** No rule to make target `C:\Perl\libConfig.pm', needed by `Makefile'. Stop. >vivi Makefile >mingw32-make.exe Makefile install mingw32-make.exe: `Makefile' is up to date. cp lib/Cache/Memcached/GetParser.pm blib\lib\Cache\Memcached\GetParser.pm cp lib/Cache/Memcached.pm blib\lib\Cache\Memcached.pm Installing C:\Perl\html\site\lib\Cache\Memcached.html Installing C:\Perl\site\lib\Cache\Memcached.pm Installing C:\Perl\site\lib\Cache\Memcached\GetParser.pm Appending installation info to C:\Perl\lib/perllocal.pod
途中、先ほどと同じエラーが出たので、無言で同じようにMakefile を修正している。
use strict; use warnings; use Cache::Memcached; my $key = "foo"; my $value = "bar"; my $expires = 3600; # 1 hour my $memcached = Cache::Memcached->new({ servers => ["127.0.0.1:11211"], compress_threshold => 10_000 }); $memcached->add($key, $value, $expires); my $ret = $memcached->get($key); print "$ret\n";
memcached は以下のように、デバッグログを吐かせる設定で起動しておく。
memcached.exe -vv
>perl a.pl bar
無事動いた。memcached 側のログはこんな感じ。
<1896 new client connection <1896 add foo 0 3600 3 >1896 STORED <1896 get foo >1896 sending key foo >1896 END <1896 connection closed.
DIRFILESEP の修正は全く不可解だが、結果オーライで気にしないことにする。
memcached のデバッグログを切って、for 文挟んで、1万回ループとかやってみたが、
my $ret; for(1..10000) { $ret = $memcached->get($key); }
私の環境で、3,4秒くらい。まあこれはもうちょっとちゃんとパフォーマンスチェックする必要があるだろう。