okuyamaプロトコル仕様表
okuaymaのオリジナルプロトコルの仕様を表にまとめした。
からり表が大きく見にくくなってしまいました...orz
以降okuyama側に変更があった場合もこの表をメンテナンスしてきます。
事前説明ですが、
1.各要素間のセパレータは","になります。
2.Encode指定という部分はBase64でのEncode指定を意味します。
送信側でEncodeで○となっている部分はBase64でエンコードしてから送信することを意味し、
返却側はサーバからEncodeされた値が返されることを意味しますので、Decodeして使用してください。
3.追記
2010/01/03:肝心なことを書き忘れてました。プロトコルの終端の区切りは"\r\n"です。
2010/01/04:Valueにブランク(サイズ0の値)を指定したい場合はBase64エンコードをせずに"(B)"という文字列を指定してください。
okuyama側でブランクとして扱われます。
2010/01/04:Key値にブランク(サイズ0の値)は指定できません。エラーとしてください。
2010/01/04:Tag値に"(B)"を指定した場合は、okuyama側でTag指定なしとして処理されます。
メソッド名 処理内容 |
説明 | サーバへ転送する値 | サーバから返却される値 | ||||||||
第1 要素 |
第2要素 | 第3要素 | 第4要素 | 第5要素 | 第6要素 | 第1 要素 |
第2要素 | 第3要素 | 第4要素 | ||
initClient 保存可能な最大サイズをMasterNodeへ問い合わせる |
値 | 0 |
0 |
true |
数値 Valueのbyte長 |
||||||
Encode | × |
||||||||||
例 |
0 | 0,true,1048576 | |||||||||
setValue 値を保存する(Tagの有り無しで転送の第3要素が変化する) |
値 | 1 | Key値 | Tag値 Tagを指定しない場合は"(B)"を連結する。存在する場合はTag文字列を":"をセパレータに連結する |
分散ロック値 "0"固定 |
Value値 | 1 | "true" or "false" or "error" 正常に保存出来た場合は"true".なんだかの理由により論理的(サイズオーバーなど)に保存できない場合は"false".サーバ側でエラーの場合は"error" |
"OK" or メッセージ 返却第2要素が"true"の場合は"OK"になる."false"や、"error"の場合はメッセージが格納される |
||
Encode | × |
○ |
(B)の場合は× Tagが存在する場合は1Tag単位でエンコード |
× |
○ |
× |
× |
× |
|||
例 |
例1Tagなし) 1,ZGF0YXNhdmVrZXlfMA==,(B),0,c2F2ZWRhdGF2YWx1ZXN0cl8w 例2Tagあり) 1,a2V5MQ==,dGFnMQ==:dGFnMg==,0,dmFsdWUx |
例1正常保存) 1,true,OK 例2Value値サイズオーバー) 1,false,Value Length Error |
|||||||||
getValue Keyを指定して値を取得 |
値 | 2 | Key値 | 2 | "true" or "false" or "error" 値が取得出来た場合は"true".取得できない、なんだかの理由により論理的(サイズオーバーなど)に取得できない場合は"false".サーバ側でエラーの場合は"error" |
Value値 or メッセージ 返却第2要素が"true"の場合はValueになる."false"や、"error"の場合はメッセージが格納される |
|||||
Encode | × |
○ |
× |
× |
○ or × 返却値の第2要素が"true"の場合は○.それ意外は× |
||||||
例 |
2,a2V5MQ== | 例1値あり) 2,true,dmFsdWUx 例2値なし) 2,false, 例3Key値サイズオーバー) 2,false,Key Length Error |
|||||||||
getTagKeys Tagを指定することでKey値を取得する |
値 | 3 | Tag値 | "true" or "false" 削除済みのKey-Valueセットの扱い.trueを指定すると、削除済みでもKey値は返される falseを指定すると、削除済みのKey値は返されない. |
4 | "true" or "false" or "error" 値が取得出来た場合は"true".取得できない、なんだかの理由により論理的(サイズオーバーなど)に取得できない場合は"false".サーバ側でエラーの場合は"error" |
Value値 or メッセージ 返却第2要素が"true"の場合は同じTagが打たれているKey値の連結文字列になるになる.セパレータは":" "false"や、"error"の場合はメッセージが格納される |
||||
Encode | × |
○ |
× |
× |
× |
○ or × 返却値の第2要素が"true"の場合は○.それ意外は× |
|||||
例 |
3,dGFnMQ==,true | 例1Key値あり) 4,true,dGFnc2FtcGxlZGF0YWtleV8w:a2V5MQ==:a2V5Mw== 例2値なし) 4,false, 例3Tag値サイズオーバー) 4,false,Tag Length Error |
|||||||||
removeValue Key値を指定することでKey-Valueセットを削除する |
値 | 5 | Key値 | 分散ロック値 "0"固定 |
5 | "true" or "false" or "error" 値が削除出来た場合は"true".取得できない、なんだかの理由により論理的(サイズオーバーなど)に取得できない場合は"false".サーバ側でエラーの場合は"error" |
Value値 or メッセージ 返却第2要素が"true"の場合は削除対象のValue値 "false"や、"error"の場合はメッセージが格納される |
||||
Encode | × |
○ |
× |
× |
× |
○ or × 返却値の第2要素が"true"の場合は○.それ意外は× |
|||||
例 |
5,ZGF0YXNhdmVrZXlfMA==,0 | 例1Key値あり) 5,true,c2F2ZWRhdGF2YWx1ZXN0cl8w 例2値なし) 5,false, 例3Key値サイズオーバー) 5,false,Key Length Error |
|||||||||
setNewValue 値を保存する(Tagの有り無しで転送の第3要素が変化する) 既に同値のKeyがサーバに存在する場合は失敗する memcachedの"add"命令に相当する |
値 | 6 | Key値 | Tag値 Tagを指定しない場合は"(B)"を連結する。存在する場合はTag文字列を":"をセパレータに連結する |
分散ロック値 "0"固定 |
Value値 | 6 | "true" or "false" or "error" 正常に保存出来た場合は"true".なんだかの理由により論理的(既にKeyが存在する.サイズオーバーなど)に保存できない場合は"false".サーバ側でエラーの場合は"error" |
"OK" or メッセージ 返却第2要素が"true"の場合は"OK"になる."false"や、"error"の場合はメッセージが格納される |
||
Encode | × |
○ |
(B)の場合は× Tagが存在する場合は1Tag単位でエンコード |
× |
○ |
× |
× |
× |
|||
例 |
例1Tagなし) 6,a2V5MQ==,(B),0,dmFsdWUx 例2Tagあり) 6,a2V5Mw==,dGFnMQ==:dGFnMg==:dGFnMw==,0,dmFsdWUz |
例1成功) 6,true,OK 例2失敗) 6,false,NG:Data has already been registered |
|||||||||
getValueVersionCheck 値を取得すると同時に該当Key-ValueセットのVersionNoも返す memcachedの"gets"命令に相当する |
値 | 15 |
Key値 |
15 |
"true" or "false" or "error" 値が取得出来た場合は"true".取得できない、なんだかの理由により論理的(サイズオーバーなど)に取得できない場合は"false".サーバ側でエラーの場合は"error" |
Value値 or メッセージ 返却第2要素が"true"の場合はValueになる."false"や、"error"の場合はメッセージが格納される |
VersionNo値(数値) |
||||
Encode | × |
○ |
× |
× |
○ |
× |
|||||
例 |
例1) 15,a2V5MQ== |
例1取得成功) 15,true,dmFsdWUx,0 例2取得成功VersionNo値が"2") 15,true,dmFsdWUx,2 例3値なし) 15,false,, |
|||||||||
setValueVersionCheck Key-Valueのセットを更新する.この際に、VersionNoを同時に渡し、VersionNoがサーバ側で変更されていない場合のみ処理が成功する memcachedの"cas"命令に相当する |
値 | 16 | Key値 | Tag値 Tagを指定しない場合は"(B)"を連結する。存在する場合はTag文字列を":"をセパレータに連結する |
分散ロック値 "0"固定 |
Value値 | VersionNo値 getValueVersionCheckで取得した値 |
16 |
"true" or "false" or "error" 正しく更新出来た場合は"true".更新出来ない、なんだかの理由により論理的(サイズオーバーなど)に取得できない場合は"false".サーバ側でエラーの場合は"error" |
"OK" or メッセージ 返却第2要素が"true"の場合は"OK"になる."false"や、"error"の場合はメッセージが格納される |
|
Encode | × |
○ |
(B)の場合は× Tagが存在する場合は1Tag単位でエンコード |
× |
○ |
× |
× |
× |
○ |
||
例 |
例1Tagなし) 16,a2V5MQ==,(B),0,dmFsdWUx,1 例2Tagあり) 16,a2V5MQ==,dGFnMQ==:dGFnMg==:dGFnOTk=,0,dmFsdWUx,3 |
例1更新成功) 16,true,OK 例2更新失敗) 16,false,NG:Data has already been updated |