memcached 1.4.0でdeleteのprotocolが変わった
ので、noreplyでのdeleteが動かない件
あとでblog書く
memcached 1.4.0からdeleteのtimeoutがなくなったので、
delete key [<time>] [noreply]
だったのが、
delete key [noreply]
となった。
see http://github.com/memcached/memcached/commit/5da8dbab2a815c00617ab60b641391ada8d96f40#diff-2
Cache::Memcached::Fastだと、timeoutに0を常にいれてしまうので、
noreply時に死ぬ。(noreplyじゃない場合のtimeoutはmemcached側で無視してくれる)
## check script
#!/usr/bin/perl -l use strict; use Cache::Memcached::Fast; my $cache = Cache::Memcached::Fast->new({ servers => [{address=>"127.0.0.1:11212",noreply=>1}] }); $cache->set('key1','val1'); $cache->set('key2','val2'); # is fail $cache->delete('key1'); print 'failed get key2' unless $cache->get('key2'); print 'can get key1' if $cache->get('key1');
#実行結果
% perl aa.pl failed get key2 can get key1
## memcached log
% ./memcached -vv -p 11212 <32 new auto-negotiating client connection 32: Client using the ascii protocol <32 set key1 0 0 4 noreply >32 NOREPLY STORED <32 set key2 0 0 4 noreply >32 NOREPLY STORED <32 delete key1 0 noreply >32 ERROR <32 get key2 >32 sending key key2 >32 END <32 connection closed. <32 new auto-negotiating client connection 32: Client using the ascii protocol <32 get key1 >32 sending key key1 >32 END <32 connection closed.
created by blog.nomadscafe.jp
コメント
コメントはありません
コメントを投稿
コメントを投稿するにはログインが必要です