だるろぐ

だるいぶろぐです

memcachedの使い方

memcachedでsetした値をさーtelnetでgetして見るとバイナリになって出てくるんだけど

おまえは何を言っているんだと思いつつ。
環境とか一切聞いてないけど。

use strict;
use warnings;
use Data::Dumper;
use Cache::Memcached::Fast;
use Cache::Memcached;
use CGI;

sub p {
    local $Data::Dumper::Indent = 1;
    local $Data::Dumper::Terse  = 1;
    warn Dumper @_;
    my @c = caller;
    print STDERR "  at $c[1]:$c[2]\n\n";
}

my $opt = {
    servers => ["localhost:11211"],
    namespace => "ns_",
};

my $m = Cache::Memcached::Fast->new($opt);
my $expire = 60 * 60;
my $v;

$m->set(scalar => "scalar_value", $expire);
$v = $m->get('scalar');
p $v;

$m->set(array => [qw/ho ge hu ga/], $expire);
$v = $m->get('array');
p $v;

$m->set(hash => {qw/k1 v1 k2 v2/}, $expire);
$v = $m->get('hash');
p $v;

my $obj = CGI->new;
$obj->param(be => 3);

$m->set(obj => $obj, $expire);
$v = $m->get('obj');
$v->param(ho => 1);

for my $key ($v->param) {
    p $v->param($key);
}

my $slow = Cache::Memcached->new($opt);
my $keys = $slow->stats('cachedump 1 100');
p values %{$keys->{hosts}->{$opt->{servers}->[0]}};

を実行した後で

% telnet localhost 11211

と打って

get ns_scalar
get ns_array
get ns_hash
get ns_obj

と打ってもバイナリが出てくるようなら残存しているプログラマを頼りなさい。
つかシリアライザに標準以外の物使ってるだけな気も。