libmemcached를 통해 memcached에 전체 MYSQL 결과를 저장하려고합니다. 가능합니까? 아니면 각 행 요소를 memcached에 별도로 저장해야합니까?libmemcached mysql 결과를 저장하십시오.
답변
결과 집합이 항상 1MB보다 작 으면 전체 결과 집합을 저장할 수 있습니다. 그렇지 않으면 (결과가 1MB보다 클 경우) 다른 해결책을 찾아야합니다. memcache의 각 행을 저장하면 잘 될 것이며, 아마도 괜찮은 해결책 일 것입니다.
값 크기의 1MB 제한은 memcache에 코딩 된 하드 한도입니다. 그 주위의 유일한 방법은 소스 코드에서 한도를 변경하고 memcache를 다시 컴파일하는 것입니다.
일부 설명은 http://groups.google.com/group/memcached/browse_thread/thread/d32434ce77131e48을 참조하십시오.
(참고 : 결과는 문자열로 직렬화 할 수 있다고 가정합니다. 그렇게 할 수 없다면 배열이 제한 요소가 아니기 때문에 개별 행을 저장할 수 없습니다. 직렬화 기능.)
라이브러리에서 집합 함수가 char * 만 입력으로 간주하기 때문에 전체 결과 집합을 저장하는 데 사용할 함수가 확실하지 않습니다. –
@SlavaMarkeyev, 예. 결과 세트가 문자열로 직렬화 가능한 경우에만 결과 세트를 저장할 수 있습니다. 직렬화 방식은 애플리케이션에 따라 다릅니다. –
@SlavaMarkeyev, 필자는 대답에 직렬화에 대한 메모를 추가했습니다. 어쨌든 개별 행을 직렬화 할 수 있다면 전체 결과 집합을 직렬화 할 수 있습니다. –
은 확실히 당신이 그것을 할 수있는 방법을 논의 게시물입니다. 모든 응답을 하나로 묶는 방법을 찾아야합니다. 어쨌든 왜 그렇게하고 싶어하는지 쉽게 알 수 없습니다.
필자는 직렬화 라이브러리를 사용하는 대신 내 자신의 추상화 계층을 작성하여 memcache/sql 특정 데이터 구조 대신 프로그램의 나머지 부분을 사용하도록합니다. 이것은 정확히 그것을하는 가장 쉬운 방법은 아니지만 내 프로젝트를 잘 충족시켜줍니다. –