Couchbaseはprotocol.txtで説明されているテキスト形式のmemcachedプロトコルをサポートしています。vBucketのサポートが不足しているため、直接couchbaseのポートに対するテキスト形式のプロトコルは無効です。テキスト形式のプロトコルを利用した全てのcouchbaseへのアクセスはmoxiを通す必要があります。
memcachedと少し異なる点は、Couchbaseはより大きなサイズのアイテムを許容できることです。アイテムの最大サイズ設定に関して、memcachedのデフォルトは1MBであるのに対し(最近のバージョンでは調整可能)、Couchbaseのデフォルトは20MBとなっています。
上記のリンクで説明されているコマンドに加えて、Couchbaseは、以下のコマンド拡張機能をサポートしています。
getl
は"ロック付き取得"であり、現在アクティブに開発中です。getl
getl
の動作と関連するコマンドがgetl
拡張操作で説明されています。
Couchbaseは範囲クエリコマンドを除き、memcachedプロジェクトのwikiで解説されている通りのバイナリmemcachedプロトコルをサポートしています。現在は、範囲クエリコマンドの実装は存在しません、これはまだドラフトの仕様です。
memcapableはmemcachedの実装がmemcachedプロトコルに準拠しているかを検証するための、memcachedのlibに含まれるツールです。プロトコルの説明で定義されているすべてのコマンドを送信し、結果を検証することによってこれを行います。これはサーバがmemcapableテストスイートを通すために、実際のアイテムストレージと全てのコマンドを実装しなければならないことを意味します。
memcapableは便利なコマンドラインオプションが色々あります(使用可能なオプションの一覧を表示するにはmemcapable
-
hを実行してみてください)。memcapableをオプションなしで実行するとlocalhost:11211
に接続し、memcapableテストスイートを実行します(「例」参照)。もしあなたが自分自身のサーバを実装しようとしていて、テストの1つが失敗したなら、失敗したい理由を知りたいでしょう。そのような時に便利なオプションが2つあります。
-v
と -c
です。-
v
オプションは、テストが失敗した理由を出力し、問題を把握できる場合があります。私はデバッガとコアファイルの大ファンなので-c
の方が好きです。-c
を利用すれば、memcapableはコアをダンプし、コアファイルを調べてテストが失敗した理由を調査することができます。
この例ではローカルホストの11211番ポートで稼動しているサーバをテストします(この例では、memcachedサーバを実行しています)。
trond@opensolaris> memcapable ascii quit [pass] ascii version [pass] ascii verbosity [pass] ascii set [pass] ascii set noreply [pass] ascii get [pass] ascii gets [pass] ascii mget [pass] ascii flush [pass] ascii flush noreply [pass] ascii add [pass] ascii add noreply [pass] ascii replace [pass] ascii replace noreply [pass] ascii CAS [pass] ascii CAS noreply [pass] ascii delete [pass] ascii delete noreply [pass] ascii incr [pass] ascii incr noreply [pass] ascii decr [pass] ascii decr noreply [pass] ascii append [pass] ascii append noreply [pass] ascii prepend [pass] ascii prepend noreply [pass] ascii stat [pass] binary noop [pass] binary quit [pass] binary quitq [pass] binary set [pass] binary setq [pass] binary flush [pass] binary flushq [pass] binary add [pass] binary addq [pass] binary replace [pass] binary replaceq [pass] binary delete [pass] binary deleteq [pass] binary get [pass] binary getq [pass] binary getk [pass] binary getkq [pass] binary incr [pass] binary incrq [pass] binary decr [pass] binary decrq [pass] binary version [pass] binary append [pass] binary appendq [pass] binary prepend [pass] binary prependq [pass] binary stat [pass] All tests passed
次の例では、"binary prepend"という名前のテストが実行されます。
trond@opensolaris> memcapable -T "binary prepend" binary prepend [pass] All tests passed
次の例では、テストスイートを実行しますが、各テストの前にプロンプトが表示されます。
trond@opensolaris> memcapable -P ascii quit Press <return> when you are ready? ascii quit [pass] ascii version Press <return> when you are ready? quit