2010-06-18 3 views
1

getting some help memcached 객체의 실제/실제 크기를 측정하는 방법에 대한 내용은 다음을 참조하십시오. 저장시 큰 객체를 더 작은 조각으로 투명하게 분할하고 결합하는 샤딩/분할 기능 구현 요청할 때 하나의 거물로 함께. 기본적으로 자동으로 memcached를 유지하기 위해 수행해야하는 모든 작업을 자동으로 수행해야합니다.키 - 값 저장에서 객체 분할 및 결합 처리?

배열, 객체 또는 어떤 종류의 객체를 분할하는 것을 처리하는 적절한 방법은 무엇입니까?

필자는 webapp에서 PHP를 사용하고 있습니다. 그러나이 경우에는 올바른 방향으로 나를 가리키는 몇 가지 가짜 코드를 사용하는 일반적인 접근 방식에 만족합니다.

고맙습니다.

+1

거대한 쓰레기, 심각하게 PHP 직렬화 된 객체를 저장하는 경우 * 크기가 meg 인 경우, memcached에 맞게 분할하는 것보다 더 많은 문제가 있다고 생각합니다! – Charles

+0

아니요, 크기는 메가 바이트가 아니지만 극단적 인 경우에는 각각 50kb 또는 100kb 일 것입니다. 따라서 두 개 또는 세 개가 있으면 분할 및 원활하게 처리해야합니다. – Industrial

+1

1MB 제한은 총 *가 아니라 키당 *임을 이해하십시오. – Charles

답변

2

다른 질문에서, serialize은 객체의 저장된 길이를 측정하는 데 사용됩니다. 개체 크기에 기본 1MB 제한을 설정하고 작업을 분할해야하는 경우 serialize, split the resulting string into appropriate chunks을 사용하고 청크를 저장하면됩니다. 나중에 join을 다시 모아서 unserialize의 결과를 얻을 수 있습니다.

심각하게 말하면, 직렬화 된 객체가 크기가 큰 경우, 객체를 저장하는 방법을 다시 생각해 볼 수 있습니다. PHP의 serialize는 약간 느릴 수 있습니다 (예 : json_encode). 그리고 그 이상으로 많은 데이터를 던지면 그 일이 무엇이든 최선 또는 가장 빠른 방법이 될 가능성이 없습니다.

memcached 및 샤딩을 성능 메커니즘으로 구현하는 경우 Xdebug과 같은 도구를 사용하여 코드를 프로파일 링하고 다른 모든 병목 현상을 제거하지 않았다면 지금 당장 중지하십시오.

+1

안녕하세요, 귀하의 도움을 많이 주셔서 감사합니다! 크기에 대한 걱정은 없습니다. 우리는 시간이 지남에 따라 크기의 증가를 측정함으로써 대응책을 취할 수있게 도와줌으로써 생산량이 1MB 한계에 근접하지 않을 것이라고 확신합니다. 그러나 접근 방식을 사용하여 memcached에 저장되는 모든 데이터 세트를 적절한 크기로 유지할 수 있습니다. – Industrial