2010-01-20 5 views
15

PHP.net에PHP의 Memcache에서 압축이란 무엇입니까?

사용 MEMCACHE_COMPRESSED가 압축 된 항목을 저장 (ZLIB를 사용)하는 ... 나는 Memcache::set 기능에서 찾고 있으며 압축을 사용하려면이 옵션 플래그를 가지고있다.

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

나는 궁금하다, 무슨 일이 단지 적은 공간을 사용하여, 이것의 도움이 될 것인가? 이것은 프로세스가 느려지는 것처럼 보입니다. 네 말이 맞아

+1

memcache의 공간을 줄이고 네트워크를 통해 전송하는 데 걸리는 시간이 줄어 듭니다. 그러나 압축 및 압축 해제 오버 헤드를 추가합니다. 또한 다른 memcache 클라이언트와 memcache increment 명령과 같은 비 호환성 문제가 발생할 수 있습니다. –

답변

24

압축 및 PHP는 신속하게 할 수 있습니다 실행하는 서버에서 압축 해제 - 네트워크와 서버의 부하에 따라서는 더 전송하는 것보다 빠를 수 (압축하지 않음)과의 데이터 네트워크를 통해 memcached 서버.

데이터 압축은 memcached 서버에서 메모리를 적게 사용한다는 것을 의미합니다.

종종 CPU, 네트워크 및 RAM 중 하나를 선택해야합니다. 서버 및 네트워크, 부하 및 사용 가능한 리소스를 고려하여 결정할 수 있어야합니다.

특정 상황에서 "가장 빠른"해결책은 무엇입니까? 당신 만이 말할 수 있습니다 ... 그리고 알 수있는 유일한 방법은 아마도 "실제 상황"에서 두 가지 솔루션을 테스트하는 것입니다.


또한 memcached 항목은 1MB보다 클 수 없습니다. 나는 어떤면에서 압축이 엔트리를 1MB보다 약간 더 두는 데 도움이된다고 가정합니다. (아직 압축되지 않은 경우)을 memcached에 넣으십시오.

+1

Max를 언급하는 Upvote. 항목 크기 –

+0

마틴, 다른 훌륭한 답변을 주셔서 감사합니다. – Industrial

4

, 그것은 사이에 더 많은 CPU 사이클을 먹는 작은 공간 또는 을 차지 떨어져 무역입니다.

당신은 너무 소중한 리소스를 RAM 또는 CPU로 선택했습니다.

+1

힌트 : RAM. 최신 CPU는 zlib와 같은 오래된 알고리즘을 매우 빠르게 실행할 수 있습니다. –

+1

또 다른 힌트. 현대 RAM이 큽니다. 항상 프로필 ... –

4
  1. memcached는 컴퓨터간에 분산 캐시를 유지하는 데 사용할 수 있습니다. 이 경우 캐시 업데이트는 네트워크 또는 컴퓨터 간의 다른 연결을 통해 전송되어야합니다. 압축을하면 전송해야하는 데이터의 양이 줄어들어 전송에 소요되는 시간이 단축되므로 시스템 성능을 향상시킬 수 있습니다.
  2. 한 호스트 내에서도 압축은 메모리 페이지를 디스크로/디스크에서 스와핑하는 것보다 훨씬 빠르기 때문에 메모리 부족으로 인한 스왑이 발생하면 압축하면 스왑해야하는 양이 줄어들어 성능이 향상됩니다. 오른쪽 구석 조건에서 압축하면 데이터 크기가 충분히 줄어들어 전혀 교환 할 필요가 없어 성능이 크게 향상됩니다.
+1

memcache 호스트 (또는 호스트)가 스와핑 중이면 매우 잘못된 행동을합니다. – dland