Обработка разбиения и объединения объектов в хранилище значений ключей? - PullRequest
1 голос
/ 19 июня 2010

После получения справки о том, как измерить физический / фактический размер объектов memcached для предотвращения их слишком большого роста, я подумал о следующем шаге - реализации функции разделения / разделения, которая прозрачно разделяет большие объекты на более мелкие кусочки при хранении и склеивают их как один большой объект при запросе их. По сути, он должен делать все автоматически за кулисами, что необходимо для того, чтобы memcached был счастлив.

Каков подходящий способ обработки разбиения массива, объектов или любых других объектов?

Я использую PHP в своем веб-приложении, но в этом случае я был бы весьма рад общему подходу с некоторым псевдо-кодом, чтобы указать мне правильное направление.

Большое спасибо!

1 Ответ

2 голосов
/ 19 июня 2010

В другом вопросе serialize используется для измерения сохраненной длины объекта. Если вы превышаете установленный по умолчанию предел в один мегабайт для размера объекта и вам нужно разделить объекты, вы можете просто использовать serialize, , чтобы разделить полученную строку на соответствующие куски , а затем сохранить куски. Позже вы можете join снова собрать их вместе и unserialize результат.

Это, как говорится ... серьезно, если ваш объект, сериализованный, имеет размер в мегабайт, вы можете пересмотреть, как вы храните вещи. Сериализация PHP может быть немного медленной (по сравнению, скажем, с json_encode), и бросание в нее мегабайта или более данных вряд ли будет лучшим или самым быстрым способом сделать то, что вы делаете.

Если вы внедряете memcached и sharding как механизм производительности, я призываю вас остановиться прямо сейчас, если вы уже не использовали инструмент, подобный Xdebug , для профилирования вашего кода и устранения всех других узких мест.

...