캐시 관리에서 특히 여러 캐시 항목이 서로 의존하는 경우 일반적으로 이러한 종속성을 추적하는 방법이 필요합니다. 캐시 항목이 변경되면 관련 캐시를 자동으로 업데이트 할 수 있기를 원합니다. 이 시점에서 맞춤형 태그는 우아한 솔루션을 제공합니다.
사용자 정의 태그를 도입하면 각 캐시 항목에 대한 종속성 태그를 지정할 수 있습니다. 이 태그는 캐시 항목과 다른 캐시 데이터 간의 종속성을 나타내는 데 사용됩니다. 외부 리소스의 상태에 의존하는 캐시 된 데이터 항목 세트가 있다고 가정합니다 (예 : 데이터베이스 테이블의 내용이 변경).
먼저 캐시 된 데이터를 저장하고 종속성 태그를 도입하는 함수를 만들 수 있습니다.
function storeWithDependencies($key, $data, $dependencyKey) {
// 캐시에 데이터를 저장합니다
apcu_store($key, $data);
// 캐시 항목의 종속성 마커 업데이트
apcu_store($dependencyKey, time()); // 타임 스탬프를 마커로 사용하십시오
}
이 예에서는 StorewithDependencies () 함수는 데이터 저장 외에도 종속성 태그를 업데이트합니다. 타임 스탬프를 종속성 마커로 사용하면 마크가 변경되면 관련 캐시 항목도 업데이트 될 수 있습니다.
캐시 된 데이터를 얻을 때 종속성 마커에 변경 사항이 있는지 확인해야합니다. 태그가 변경되면 캐시 된 데이터를 재생할 수 있습니다.
function fetchWithDependencies($key, $dependencyKey) {
// 현재 종속성 태그를 얻으십시오
$lastDependencyUpdate = apcu_fetch($dependencyKey);
// 캐시 된 데이터를 가져옵니다
$cachedData = apcu_fetch($key);
// 캐시 된 데이터가 존재하지 않거나 종속성 마커가 업데이트 된 경우,캐시를 다시 계산하고 저장하십시오
if ($cachedData === false || $lastDependencyUpdate < getLastDataUpdateTime()) {
$cachedData = getSomeDataFromDb();
apcu_store($key, $cachedData);
apcu_store($dependencyKey, time());
}
return $cachedData;
}
이 코드에서 FetchWithDependencies () 함수는 캐시 된 데이터가 존재하는지 확인하고 종속성 마크가 변경되었는지 여부를 비교합니다. 종속성 태그가 변경되면 (예 : 데이터베이스 테이블이 업데이트 됨) 캐시 데이터가 다시 계산되고 캐시와 태그가 업데이트됩니다.
apcu_entry () 함수와 사용자 정의 태그를 결합하여보다 효율적이고 유연한 캐시 종속성 관리를 달성 할 수 있습니다. 캐시 종속성이 변경되면 새 캐시가 자동으로 업데이트되며 애플리케이션 성능에 영향을 미치는 만료 또는 유효하지 않은 데이터를 피합니다.
예를 들어, 복잡한 종속성이있는 캐시 시스템에서 다음 전략을 사용할 수 있습니다.
function fetchWithComplexDependencies($key, $dependencyKey) {
// 사용 apcu_entry 캐시 된 데이터를 얻거나 계산합니다
return apcu_entry($key, function() use ($dependencyKey) {
// 종속성 마커가 변경되었는지 확인하십시오
if (apcu_exists($dependencyKey)) {
$lastUpdate = apcu_fetch($dependencyKey);
if ($lastUpdate < getLastDataUpdateTime()) {
// 데이터가 업데이트되었습니다,재판소가 필요합니다
return getSomeDataFromDb();
}
}
// 캐시 된 데이터는 변경되지 않았습니다,기존 캐시로 돌아갑니다
return apcu_fetch($key);
});
}
이 예에서 APCU_ENTRY ()는 캐시 된 데이터에 대한 액세스를 처리하는 데 사용되는 반면, 종속성 태그는 캐시가 다시 계산 될 때 제어합니다. 이러한 방식으로 외부 종속성이 변경되면 캐시 시스템을 제 시간에 업데이트하여 최신 데이터를 얻을 수 있습니다.