해결 : 목록에 단일 SerialKey를 추가하려고했습니다. 현재 하나의 키가있는 SerialKeyList를 추가하면 그것이 정상적으로 작동합니다.memcache가 Google 프로토콜 버퍼를 추가/앞에 추가
저는 memmached와 libmemcached를 사용하고 있습니다. Google 프로토콜 버퍼는 요소 목록과 블랙리스트 요소 목록으로 구성된 캐시에 목록을 저장합니다.
.proto은 :
message SerialKeyList {
repeated SerialBlackKey bkey = 2;
repeated SerialKey key = 1;
}
message SerialKey {
optional string key = 1;
}
message SerialBlackKey {
optional string key = 2;
}
I가 memcached_append으로 어느 타입의 직렬 키 SerialBlackKey 또는 단일 요소를 추가하고자
(). 하나의 SerialKey 요소 (memcached_set (SerialKeyList) 사용)로 목록을 초기화 한 다음 하나의 SerialBlackKey 요소 (memcached_append 포함)를 추가합니다.
PrintDebugString와 memcached를 인쇄에서 목록을 (구문 분석 할 때 내가 무엇입니까 결과) 그래서 두 목록이 생성
key {
key: "REPL:http://a.host.com/replica"
}
bkey {
10: "PL:http://a.host.com/replica"
}
이지만, 두번째 요소를 제대로 읽지 못하고있다.
가능해야합니까? Protobuf 인코딩 documentation에서 나는 반복 된 필드가 다른 필드를 따라야 할 필요가 없다는 것을 이해하므로 다른 유형의 필드를 인터리빙 할 수 있어야합니다.
/EDIT : 목록에있는 한 유형의 요소 (SerialKey)에만 동일한 문제가 있습니다. 여기에서 SerialKey에 대한 추가 속성을 사용하여 블랙리스트에 있는지 여부를 결정합니다. 프로토 :
message SerialKeyList {
repeated SerialKey key = 1;
}
message SerialKey {
required string key = 1;
required bool white = 2 [default = true];
}
당신은 내 문장을 측면 문장으로 해결했습니다. 목록에 단일 SerialKey를 추가하려고했습니다. 이제 하나의 키가있는 SerialKeyList를 추가하면 정상적으로 작동합니다. – devjat
@ user1279035 나는 그것이 될 직감이 있었다 : p –