memcache без сериализации массива?

  • Автор темы Автор темы sunyang
  • Дата начала Дата начала

sunyang

Новичок
Выяснилось, что если записать в memcache массив этак 4 мегабайта, то на нагруженных проектах (4000 посещалка) скорость восстановления из memcache сопоставима со скоростью запроса в базу, а именно доходит до 2 секунд порой.

т.е.
PHP:
memcache::get('BIG_ARRAY');
выполняется 1 - 2 секунды в зависимости от посещалки.

Я думаю времени много уходит именно на десериализацию этого массива, ведь он там хранится в сериализованном виде.

Можно как-то зарезервировать память чисто для массива, тобишь для объема данных?
Или может можно хранить массив в бинарных данных, чтобы не тратить время на десериализацию ?

Есть какие-то методы хранения больших данных (массивов) в оперативке без их преобразования?
 
Разбей уже массив на части, советовали ведь. Нет, ты будешь искать метод как бы помучиться, зачем?

PS: 4000 нагруженный проект?
 
sunyang
Рассказал бы, какие данные и зачем хочешь так хранить? А то насоветовать можно что угодно, но не факт, что тебе подойдет.

И как уже советовали: серриализуй с помощью php а записывай уже строку. И замерь, что сколько время занимает?
 
Последнее редактирование:
Нет, без сериализации не получится. Можно попробовать другие сериализаторы. Например, igbinary или хотя бы json_*
 
Да что никто не спрашивает что в массиве? Что это такое, что требуется аж 4мб данных для генерации одного ответа? Для сравнения в utf8 вся война и мир txt 5.5 мб весят
 
Да что никто не спрашивает что в массиве?
Да кучу раз спрашивали, он игнорит.

У меня уже брезжит заветное чувство восхищения, от того, будь вдруг ответ получен, там будет что-то вроде "я храню там результат выборки из стопицот строк что бы быстро делать пагинацию по ним" или что-то в этом духе.
 
сопоставима со скоростью запроса в базу, а именно доходит до 2 секунд порой

какие медленные запросы, наверное базу надо менять, там способы хранения неправильные
 
Сверху