현재 위치: > 최신 기사 목록> APCU_ENTRY를 사용하여 페이징 데이터를 캐시하는 방법

APCU_ENTRY를 사용하여 페이징 데이터를 캐시하는 방법

gitbox 2025-05-26

APCU는 PHP에서 데이터 판독 값을 가속화하는 데 사용되는 캐시 시스템입니다. 데이터를 공유 메모리에 저장하고 데이터베이스 액세스를 줄일 수 있습니다. APCU_ENTRY 는 APCU가 제공하는 고급 기능입니다. 캐시 쓰기 및 읽기 작업을 결합하여 캐시에 존재할 때 데이터를 효율적으로 읽을 수 있도록합니다.

APCU_ENTRY 의 작동 메커니즘은 다음과 같습니다. 캐시에 해당 값이있는 경우이 값을 직접 반환합니다. 그렇지 않은 경우 콜백 함수를 통해 값을 얻고 캐시에 값을 저장합니다. 이 메커니즘은 외부 데이터 소스 (예 : 데이터베이스)에서 계산하거나 가져와야하는 시나리오에 매우 적합합니다.

페이징 데이터 캐싱을 구현하는 방법은 무엇입니까?

페이징 기능은 일반적으로 많은 양의 데이터를 표시하고 데이터를 여러 개의 작은 조각으로 나누기 위해 사용됩니다. 페이징 쿼리의 일반적인 시나리오는 사용자가 특정 페이지에서 데이터를 요청할 때 시스템이 해당 페이지의 데이터를 데이터베이스에서 쿼리하는 것입니다. 사용자가 페이지를 전환 할 때마다 데이터베이스가 필요하여 불필요한 성능 폐기물이 발생합니다.

APCU_ENTRY 기능을 사용하여 매번 데이터베이스를 쿼리하지 않도록 PAGED 데이터를 캐시 할 수 있습니다. 사용자가 데이터를 요청하면 먼저 캐시에 페이지 데이터가 존재하는지 확인하십시오. 존재하는 경우 캐시 된 데이터를 직접 반환하고 그렇지 않으면 데이터베이스를 쿼리하고 결과를 캐시하십시오.

샘플 코드

다음은 apcu_entry를 통해 페이징 데이터를 캐시하는 방법을 보여주는 간단한 예입니다.

 <?php

// 데이터베이스 쿼리 기능을 시뮬레이션합니다
function getDataFromDatabase($page, $limit) {
    // 모든 페이지를 가정합니다 10 데이터
    $start = ($page - 1) * $limit;
    $end = $start + $limit - 1;
    
    // 데이터베이스 데이터를 시뮬레이션합니다(실제 상황에서는 데이터베이스에서 데이터를 쿼리해야합니다.)
    $data = [];
    for ($i = $start; $i <= $end; $i++) {
        $data[] = "Item " . ($i + 1);
    }

    return $data;
}

// 페이지를 입은 데이터를 얻는 기능
function getPaginatedData($page, $limit = 10) {
    // 캐시의 고유 키 구성
    $cacheKey = "page_{$page}_limit_{$limit}";
    
    // 사용 apcu_entry 캐시 데이터
    $data = apcu_entry($cacheKey, function() use ($page, $limit) {
        // 캐시에 데이터가없는 경우,데이터베이스를 쿼리하십시오
        return getDataFromDatabase($page, $limit);
    }, 3600); // 은닉처 1 시간

    return $data;
}

// 사용示例:첫 번째를 얻으십시오 2 페이지 데이터
$page = 2;
$data = getPaginatedData($page);

echo "Page $page data:\n";
print_r($data);

?>

코드 설명

  1. GetDataFromDatabase : 데이터베이스에서 페이징 데이터를 얻는 기능을 시뮬레이션합니다. 실제 응용 프로그램에서는 실제 데이터베이스 쿼리 작업으로 대체 할 수 있습니다.

  2. getPaginatedData :이 기능은 APCU_ENTRY를 사용하여 페이지 진화 데이터를 캐시합니다. 페이지 번호를 기반으로 캐시 키를 구성하고 캐시에 데이터가 있으면 직접 반환합니다. 캐시에 데이터가없는 경우 콜백 함수는 데이터베이스에서 데이터를 얻고 캐시에 데이터를 저장하기 위해 호출됩니다.

  3. APCU_ENTRY : 첫 번째 매개 변수는 캐시 된 키이고, 두 번째 매개 변수는 콜백 함수이며, 이는 데이터를 얻는 데 사용되며 세 번째 매개 변수는 캐시 된 만료 시간 (초)입니다. 이 경우 데이터는 1 시간 동안 캐시됩니다.

이점

  1. 데이터베이스 쿼리 감소 : Paginated 데이터가 캐시 된 경우 데이터베이스를 반복적으로 쿼리하여 데이터베이스의 부담을 줄일 필요가 없습니다.

  2. 응답 속도 향상 : 캐시는 읽기 속도를 크게 향상시키고 계산 및 데이터베이스 액세스를 모든 요청에 ​​따라 줄일 수 있습니다.

  3. 간단하고 사용하기 쉬운 : 간결한 코드와 고성능으로 APCU_ENTRY를 통해 캐시를 쉽게 구현할 수 있습니다.

주목해야 할 것

  1. 캐시 정리 : 캐시의 데이터가 항상 유효하지는 않습니다. 비즈니스 요구에 따라 합리적인 만료 시간을 설정하거나 캐시를 수동으로 청소해야합니다.

  2. 메모리 관리 : APCU는 공유 메모리를 사용합니다. 동시 응용 프로그램에서는 과도한 캐시 메모리 사용으로 인해 시스템 성능 문제를 피하기 위해 메모리 사용 및 청소 전략을 고려해야합니다.

  3. 캐시 일관성 : 캐시 및 데이터베이스의 데이터는 일관성이 있어야합니다. 데이터베이스의 데이터가 변경되면 만료 된 데이터를 반환하지 않도록 캐시를 제 시간에 정리해야합니다.