PHP에서 APCU (대체 PHP 캐시 사용자)는 일반적으로 사용되는 캐시 확장으로 데이터 액세스 속도를 크게 향상시킬 수 있습니다. APCU_CLEAR_CACHE 및 APCU_FETCH 는 APCU에서 매우 중요한 두 가지 기능입니다. 전자는 캐시를 지우는 데 사용되며 후자는 캐시에서 데이터를 얻는 데 사용됩니다. 이 기사는 실제 개발에서주의를 기울여야하는 핵심 요점을 분석하는 데 중점을 둔이 두 기능의 조합에 중점을 둘 것입니다.
APCU_CLEAR_CACHE ()는 현재 프로세스에서 모든 캐시 항목을 지 웁니다 (일반적으로 모든 사용자가 공유하는 APCU 캐시). 이것은 다음을 의미합니다.
호출되면 모든 캐시 된 데이터가 즉시 비워집니다.
데이터 구조를 전체적으로 새로 고치는 경우 사용하기에 적합하지만 자주 호출 할 수는 없습니다.
핵심 사항 : 이 기능이 자주 호출되면 빈번한 캐시 고장을 일으켜 데이터베이스 또는 기타 백엔드 리소스의 액세스 압력이 증가하고 성능을 줄입니다.
apcu_fetch ($ 키, & $ 성공)는 캐시에서 지정된 키의 데이터를 가져 오는 데 사용됩니다. 데이터가 성공적으로 검색되는지 여부를 결정하는 데 사용되는 매우 중요한 매개 변수 $ 성공이 있습니다.
예:
<?php
$key = 'user_data';
$data = apcu_fetch($key, $success);
if ($success) {
// 캐시에서 성공적으로 읽습니다
echo "캐시 데이터:" . json_encode($data);
} else {
// 캐시에 없습니다,리진 로직을 실행하십시오
$data = getUserDataFromDB();
apcu_store($key, $data);
}
?>
핵심 사항 : APCU_Fetch가 False를 반환하거나 캐시 된 데이터 자체가 False 이므로 $ 성공을 확인하십시오. 판사에게 반환 값을 직접 사용하면 캐시가 잘못 판단 될 수 있습니다.
APCU_CLEAR_CACHE ()를 사용하여 모든 캐시를 지우고 apcu_fetch ()를 사용하여 데이터를 얻는다고 가정하십시오. 캐시 미스가있을 수 있으며 데이터 소스에서 다시 읽고 캐시에 다시 기록해야합니다.
예:
<?php
// 캐시를 지우십시오
apcu_clear_cache();
// 데이터를 읽습니다
$data = apcu_fetch('my_key', $success);
if (!$success) {
// 캐시 빈,데이터베이스 또는 기타 데이터 소스에서 다시 접수해야합니다.
$data = getDataFromSource();
apcu_store('my_key', $data);
}
echo $data;
?>
핵심 사항 :
신중한 작업을 지우고 자주 실행하는 것이 권장되지 않습니다.
청소 후 캐시 고장을 피하기 위해 필요한 캐시를 제 시간에 재구성해야합니다.
멀티 스레드 또는 다중 프로세스 환경에서는 캐시 재구성을위한 레이스 조건이있을 수 있으며, 잠금 장치를 추가하거나 분산 잠금 전략을 채택하는 것이 좋습니다.
APCU는 공유 메모리 캐시로, 동일한 서버의 모든 PHP 프로세스에서 이론적으로 공유됩니다. 그러나 멀티 서버 또는 다중 프로세스 환경에서 APCU_CLEAR_CACHE ()는 현재 서버의 캐시에만 영향을 미치며 다른 서버의 캐시를 동기화 할 수 없습니다.
핵심 사항 :
분산 환경 인 경우 APCU 캐시 청산에만 의존하면 일관되지 않은 데이터가 발생할 수 있습니다.
Redis 및 Memcached와 같은 분산 캐싱 솔루션을 사용하거나 캐시 동기화 메커니즘을 직접 설계하는 것이 좋습니다.
우수한 캐시 키 이름 지정은 APCU_Fetch 및 APCU_CLEAR_CACHE를 사용할 때 우발적 인 정리를 피할 수 있습니다.
<?php
// 캐시 사용자 데이터,다른 캐시와의 충돌을 피하십시오
$key = 'user_data_' . $userId;
$data = apcu_fetch($key, $success);
?>
핵심 사항 :
캐시를 지울 때 유니버설 캐시 키를 사용하여 관련없는 데이터가 실수로 손상되도록합니다.
모든 캐시의 빈번한 청소를 피하려면 단일 키에 APCU_DELETE를 사용하는 것이 좋습니다.
APCU_CLEAR_CACHE는 모든 캐시를 지우고주의해서 작동합니다.
apcu_fetch를 사용할 때는 잘못 판단을 피하려면 $ 성공 매개 변수를 확인하십시오.
캐시를 지우고 나면 캐시 고장을 피하기 위해 캐시를 제 시간에 재구성해야합니다.
멀티 서버 환경에서 APCU는 크로스 서버 캐시 동기화를 지원하지 않습니다.
캐시 키를 합리적으로 이름을 지정하고 APCU_DELETE를 사용하여 캐시를 정확하게 삭제하십시오.
APCU_CLEAR_CACHE 및 APCU_FETCH를 합리적으로 결합하고 캐시 실패 및 재구성 메커니즘을 설계하는 것이 효율적인 캐시 사용을 보장하는 열쇠입니다.
<?php
// 예:조합으로 사용하십시오 apcu_clear_cache 그리고 apcu_fetch
apcu_clear_cache();
$key = 'gitbox.net_cache_key';
$data = apcu_fetch($key, $success);
if (!$success) {
$data = "데이터 소스에서 데이터를 다시로드했습니다";
apcu_store($key, $data);
}
echo $data;
?>