第三回の紹介をしない間に、連載「memcachedの活用と運用 実践編」の最終回が公開されました。最終回は、memcachedを多く運用してきた経験から得た小さめのTIPSをいくつか紹介する回となっています。
言語依存の話になるので詳しくは書きませんでしたが、記事中のincrementのサンプルで
my $result = $memd->incr($key, @_);
if ( defined $result && ! $result ) {
...
}
このように冗長にみえる条件文になっていますが、このdefinedと!$resultの意味はCache::Memcached::Fastのドキュメントを読むと解ります。
Return: unsigned integer, new value for the $key, or false for negative server reply, or undef in case of some error.
undefの場合はエラー、定義済みだけど空文字の場合はキーが見つからなかった場合。
if ( ! $result ) { ..
とだけしてしまうと、何らかの理由で一時的にmemcachedに接続ができなかった場合に、初期値を入れてしまう危険性があります。(ここではaddを利用しているので危険性はないとおもいますが)高負荷時にmemcachedにつながらないことがどれくらいあるのか、把握できてませんが、そういうこともあるよということで。
memcached/docs/protocol.txtとかドキュメントはちゃんと読むのがおぬぬめです