解决:我试着追加一个单一的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