수색…
비고
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);
}
이 경우 연결과 달리 값을 저장하거나 가져 오기 전까지는 활성 연결이 없습니다.
캐싱에는 구현해야 할 세 가지 중요한 작업이 있습니다.
- 데이터 저장 : memcached 서버에 새 데이터 추가
- 데이터 가져 오기 : memcached 서버에서 데이터 가져 오기
- 데이터 삭제 : 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 배 빠릅니다.