php Memcached 기본 사용법
페이지 정보

본문
Memcached 기본 사용법
다음은 Memcached의 기본적인 사용 예시입니다.
<?php
// 1. Memcached 인스턴스 생성
$memcached = new Memcached();
// 2. Memcached 서버 연결
$memcached->addServer('localhost', 11211) or die("Memcached 서버에 연결할 수 없습니다.");
// 3. 데이터 저장 (set)
$key = 'user_data';
$data = [
'name' => '홍길동',
'email' => 'hong@example.com'
];
$expiration = 3600; // 1시간 동안 유효
$memcached->set($key, $data, $expiration);
echo "데이터를 성공적으로 저장했습니다.
";
// 4. 데이터 조회 (get)
$retrieved_data = $memcached->get($key);
if ($retrieved_data) {
echo "Memcached에서 데이터를 가져왔습니다:
";
print_r($retrieved_data);
echo "
";
} else {
echo "Memcached에서 데이터를 찾을 수 없습니다.
";
}
// 5. 데이터 삭제 (delete)
$memcached->delete($key);
echo "데이터를 성공적으로 삭제했습니다.
";
// 6. 삭제 후 데이터 조회
$retrieved_data_after_deletion = $memcached->get($key);
if ($retrieved_data_after_deletion) {
echo "삭제 후 데이터가 발견되었습니다.
";
} else {
echo "데이터가 성공적으로 삭제되었습니다.
";
}
// 7. 모든 캐시 항목 무효화 (flush)
$memcached->flush();
echo "모든 캐시 항목을 무효화했습니다.
";
?>
주요 Memcached 클래스 메서드
- __construct(?string $persistent_id = null): Memcached 클래스의 인스턴스를 생성합니다. $persistent_id를 사용하면 요청 간에 영구 연결을 유지할 수 있습니다.
- addServer(string $host, int $port, int $weight = 0): Memcached 서버를 연결 풀에 추가합니다.
- set(string $key, mixed $value, int $expiration = 0): 데이터를 지정된 키로 Memcached에 저장합니다. expiration은 초 단위 만료 시간입니다.
- get(string $key): 지정된 키에 해당하는 데이터를 검색합니다.
- delete(string $key): 지정된 키에 해당하는 항목을 Memcached에서 삭제합니다.
- increment(string $key, int $offset = 1): 지정된 키의 숫자 값을 증가시킵니다.
- decrement(string $key, int $offset = 1): 지정된 키의 숫자 값을 감소시킵니다.
- flush(): 캐시에 있는 모든 항목을 무효화합니다.
캐싱 전략 예시 (데이터베이스 쿼리 결과 캐싱)
데이터베이스 부하를 줄이기 위해 Memcached를 활용하는 일반적인 예시입니다.
<?php
$memcached = new Memcached();
$memcached->addServer('localhost', 11211);
$cacheKey = 'all_users'; // 캐시 키
// 1. Memcached에서 데이터 조회
$users = $memcached->get($cacheKey);
if ($users) {
// 캐시에서 데이터 발견
echo "캐시에서 사용자 데이터를 가져왔습니다.
";
print_r($users);
} else {
// 캐시에 데이터가 없으므로 데이터베이스에서 조회
echo "데이터베이스에서 사용자 데이터를 가져옵니다.
";
// 실제로는 데이터베이스에 연결하고 쿼리를 실행하는 코드
$db_users = [
['id' => 1, 'name' => '김철수'],
['id' => 2, 'name' => '이영희']
];
// 2. 데이터베이스에서 가져온 데이터를 Memcached에 저장
$memcached->set($cacheKey, $db_users, 60); // 60초 동안 캐시
$users = $db_users;
print_r($users);
}
?>
댓글목록
등록된 댓글이 없습니다.