第三回の紹介をしない間に、連載「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とかドキュメントはちゃんと読むのがおぬぬめです

このブログ記事について

このページは、Masahiro Naganoが2010年9月 9日 14:02に書いたブログ記事です。

ひとつ前のブログ記事は「プロのサーバ管理者がApacheのStartServers, (Min|Max)SpareServers, MaxClientsを同じにする理由」です。

次のブログ記事は「gumiStudy#2 で memcached の運用について喋ってきた」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

ウェブページ

OpenID対応しています OpenIDについて
Powered by Movable Type 4.27-ja