수색…


비고

설치

pecl을 사용하여 memcache를 설치할 수 있습니다.

pecl install memcache

memcache를 사용한 캐싱

Memcache는 분산 객체 캐싱 시스템이며 작은 데이터를 저장하기 위해 key-value 을 사용합니다. PHP로 Memcache 코드를 호출하기 전에 PHP가 설치되어 있는지 확인해야합니다. 그것은 PHP에서 class_exists 메소드를 사용하여 수행 할 수 있습니다. 모듈이 설치되었는지 확인한 후 memcache 서버 인스턴스에 연결하는 것으로 시작합니다.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
}else {
  print "Not connected to cache server";
}

이것은 Memcache php-drivers가 설치되어 있는지 확인하고 localhost에서 실행중인 memcache 서버 인스턴스에 연결합니다.

Memcache는 데몬으로 실행되며 memcached 라고합니다.

위의 예에서 우리는 하나의 인스턴스에만 연결했지만, 다음을 사용하여 여러 서버에 연결할 수도 있습니다.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->addServer('192.168.0.100',11211);
  $cache->addServer('192.168.0.101',11211);
}

이 경우 연결과 달리 값을 저장하거나 가져 오기 전까지는 활성 연결이 없습니다.

캐싱에는 구현해야 할 세 가지 중요한 작업이 있습니다.

  1. 데이터 저장 : memcached 서버에 새 데이터 추가
  2. 데이터 가져 오기 : memcached 서버에서 데이터 가져 오기
  3. 데이터 삭제 : memcached 서버에서 기존 데이터를 삭제합니다.

데이터 저장

$cache 또는 memcached 클래스 객체는 (ttl) 값을 저장하기 위해 키, 값 및 시간을 사용하는 set 메소드를 가지고 있습니다.

$cache->set($key, $value, 0, $ttl);

여기서 $ ttl 또는 time to live는 Memcache가 서버에 쌍을 저장하기를 원하는 시간을 초 단위로 나타냅니다.

데이터 가져 오기

$cache 또는 memcached 클래스 객체는 키를 가져 와서 해당 값을 반환하는 get 메서드를가집니다.

$value = $cache->get($key);

키에 설정된 값이없는 경우 null을 리턴합니다.

데이터 삭제

때로는 일부 캐시 값을 삭제해야 할 수도 있습니다. $cache 또는 memcache 인스턴스에는 동일한 메소드에 사용할 수있는 delete 메소드가 있습니다.

$cache->delete($key);

캐싱을위한 작은 시나리오

간단한 블로그를 가정 해 봅시다. 각 페이지로드시 데이터베이스에서 가져 오는 방문 페이지에 여러 게시물이있을 것입니다. SQL 쿼리를 줄이기 위해 memcached를 사용하여 게시물을 캐시 할 수 있습니다. 여기에 아주 작은 구현입니다.

if (class_exists('Memcache')) {
  $cache = new Memcache();
  $cache->connect('localhost',11211);
    if(($data = $cache->get('posts')) != null) {
      // Cache hit
      // Render from cache
    } else {
      // Cache miss
      // Query database and save results to database
      // Assuming $posts is array of posts retrieved from database
      $cache->set('posts', $posts,0,$ttl);
    }
}else {
  die("Error while connecting to cache server");
}

APC 캐시를 사용한 캐시

Alternative PHP Cache (APC)는 PHP를위한 무료 opcode 캐시입니다. 그것의 목표는 PHP 중간 코드를 캐싱하고 최적화하기위한 자유롭고 개방적이며 견고한 프레임 워크를 제공하는 것입니다.

설치

sudo apt-get install php-apc
sudo /etc/init.d/apache2 restart

캐시 추가 :

apc_add ($key, $value , $ttl);
$key = unique cache key
$value = cache value
$ttl = Time To Live;

캐시 삭제 :

apc_delete($key);

캐시 설정 예 :

if (apc_exists($key)) {
    echo "Key exists: ";
    echo apc_fetch($key);
} else {
    echo "Key does not exist";
    apc_add ($key, $value , $ttl);
}

실적 :

APC는 Memcached보다 거의 5 배 빠릅니다.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow