解決:我試着追加一個單一的SerialKey到列表。當我現在將一個SerialKeyList附加到一個密鑰時,它的工作原理應該如此。memcache追加/ prepend與谷歌協議緩衝區
我使用與libmemcached和谷歌協議緩衝區memcached來保存在其中包括的元素的列表,並列入黑名單的元素的列表的高速緩存的列表。
的.proto是:
message SerialKeyList {
repeated SerialBlackKey bkey = 2;
repeated SerialKey key = 1;
}
message SerialKey {
optional string key = 1;
}
message SerialBlackKey {
optional string key = 2;
}
我想追加與memcached_append任一類型的串行鍵或SerialBlackKey的單一元件()。 我使用一個SerialKey元素(使用memcached_set(SerialKeyList))初始化列表,然後追加一個SerialBlackKey元素(使用memcached_append)。
分析從Memcached和印刷用PrintDebugString名單(當我得到的結果)是
key {
key: "REPL:http://a.host.com/replica"
}
bkey {
10: "PL:http://a.host.com/replica"
}
因此要創建兩個列表,但第二個元素是不正確讀取。
應該可以嗎?從Protobuf編碼documentation我知道重複字段不必緊跟另一個字段,因此應該可以使用其他類型的交叉字段。
/編輯:我有隻有一個列表中的類型的元件(串行鍵)同樣的問題。 這裏我使用SerialKey上的其他屬性來決定它是否在黑名單中。 原:
message SerialKeyList {
repeated SerialKey key = 1;
}
message SerialKey {
required string key = 1;
required bool white = 2 [default = true];
}
您在側句子解決我的問題:) 我想追加一個串行鍵到列表中。 當我現在追加一個SerialKeyList與一個關鍵,它的工作原理應該是。 – devjat 2012-03-19 17:40:52
@ user1279035我有一個預感它會是:p – 2012-03-19 18:21:04