Что такое сжатие в PHP Memcache?
На PHP.net я смотрю Memcache:: set и имеет этот необязательный флаг для использования сжатия...
Используйте MEMCACHE_COMPRESSED для сохранения элемент сжат (использует zlib).
$memcache_obj->set('var_key',
'some really big variable',
MEMCACHE_COMPRESSED,
50);
Мне любопытно, какая польза от этого, просто используя меньше места? Похоже, это замедлит процесс?
Ответы
Ответ 1
Сжатие и распаковка на серверах, на которых запущен PHP, может быть быстрым - в зависимости от вашей сети и нагрузки на ваших серверах, это может быть быстрее, чем перенос большего количества (не сжатых) данных на серверы memcached через сеть.
Сжатие ваших данных также означает использование меньше памяти на серверах memcached.
Как часто, вы должны выбирать между процессором, сетью и оперативной памятью, и вы должны принимать во внимание свои серверы и сеть, их нагрузку и доступные ресурсы, чтобы иметь возможность решать.
Каким будет "самое быстрое" решение в вашей конкретной ситуации? Только вы можете сказать... И единственный способ узнать - это, вероятно, тестирование обоих решений в "реальных условиях".
Кроме того, записи memcached не могут быть больше 1 МБ; Я полагаю, что в некотором смысле это сжатие может помочь вставить записи размером более 1 МБ (если они еще не сжаты) в memcached.
Ответ 2
Вы правы, это компромисс между , занимающим меньше места или , с большим количеством циклов процессора.
Вы тоже выбираете, какой ресурс вам дороже, RAM или CPU.
Ответ 3
- memcached может использоваться для хранения распределенного кэша между машинами. В этом случае обновления кеша должны быть отправлены через сеть или другое соединение между машинами. Сжатие уменьшает объем данных, которые необходимо отправить, поэтому сокращает время, необходимое для передачи, и, следовательно, может улучшить производительность системы.
- даже в пределах одного хоста, сжатие на порядок быстрее, чем замена страниц памяти на/с дисков, поэтому, если вы меняете нехватку памяти, сжатие уменьшит количество, которое необходимо поменять местами, и тем самым повысить производительность. При правильных углах сжатия сжатие может уменьшить размер данных достаточно, чтобы вам не приходилось свопать вообще - большая победа в производительности.