Для чего нужно сжатие в PHP Memcache? - PullRequest
16 голосов
/ 21 января 2010

На PHP.net я смотрю на функцию Memcache :: set , и у нее есть этот необязательный флаг для использования сжатия ...

Используйте MEMCACHE_COMPRESSED для хранения сжатый элемент (использует zlib).

$memcache_obj->set('var_key',
                   'some really big variable',
                    MEMCACHE_COMPRESSED,
                    50);

Мне любопытно, какая польза от этого, если просто использовать меньше места? Кажется, это замедлит процесс?

Ответы [ 3 ]

25 голосов
/ 21 января 2010

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

Сжатие ваших данных также означает использование меньшего количества памяти на серверах memcached.

Как обычно, вам приходится выбирать между ЦП, сетью и ОЗУ - и вы должны учитывать ваши серверы и сеть, их нагрузку и доступные ресурсы, чтобы иметь возможность принимать решение.

Что будет самым быстрым решением в вашей конкретной ситуации? Только вы можете сказать ... И единственный способ узнать это, вероятно, путем тестирования обоих решений в "реальных условиях".


Кроме того, записи memcached не могут быть больше 1 МБ; Я полагаю, в некотором смысле, это сжатие может помочь поместить записи размером чуть больше 1 МБ (когда еще не сжато) в memcached.

4 голосов
/ 21 января 2010
  1. memcached можно использовать для хранения распределенного кэша между машинами. В этом случае обновления кеша необходимо будет отправлять через сеть или другое соединение между машинами. Сжатие уменьшает объем данных, которые необходимо отправить, поэтому сокращает время, необходимое для передачи, и, следовательно, может повысить производительность системы.
  2. даже в пределах одного хоста сжатие происходит на несколько порядков быстрее, чем обмен страницами памяти на / с дисков, поэтому, если вы меняете местами из-за нехватки памяти, сжатие сократит объем, который необходимо обменять, и тем самым повысит производительность. В правильных условиях сжатие может уменьшить размер данных настолько, что вам вообще не придется менять местами - большой выигрыш в производительности.
4 голосов
/ 21 января 2010

Вы правы, это компромисс между , занимающим меньше места или , потребляющим больше циклов ЦП .

Вы также сами выбираете, какой ресурс более ценен для вас, ОЗУ или ЦП.

...