memcachedに依存するシステムやコードを書く人は大嫌いな訳だけど、スケーラビリティを向上させてレスポンス時間の高速化には必須なmemcachedですが、最近のプロトコル変更には疑問を感じてしまう。

1.4.0では、こちらに書いた通り、いつの間にかdeleteのtimeoutがサポートされなくなった。なので、

delete key timeout noreply

というコマンドが無効になって困ることになった。それでも

delete key timeout

というコマンドは、timeoutにどんなも文字列が入っていてもエラーになることはなかった。timeoutは効かないけど。

ここから1.4.4ではさらに悪化。timeoutが0でないとエラーになるようになった。つまり

delete key 0 noreply
delete key 0

は有効なんだけど、

delete key 10

がエラーになるようになった。 この変更のコミットはこれ

実際試す。

% telnet localhost 11234
 Trying 127.0.0.1...
 Connected to localhost.
 Escape character is '^]'.
 version
 VERSION 1.4.4
 delete key 10
 CLIENT_ERROR bad command line format.  Usage: delete <key> [noreply]
 quit

プロトコルの変更は下位互換が基本中の基本だと思うんだ。また1つmemcachedが嫌いになった。

このブログ記事について

このページは、Masahiro Naganoが2010年2月 8日 13:01に書いたブログ記事です。

ひとつ前のブログ記事は「nginxの組み込みperlで非同期に遅延させてレスポンス」です。

次のブログ記事は「local::libを使ってバンドルRPMを作る。」です。

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

ウェブページ

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