>  기사  >  백엔드 개발  >  Yii 프레임워크 공식 가이드 보충 시리즈 29 - 캐싱: 데이터 캐싱

Yii 프레임워크 공식 가이드 보충 시리즈 29 - 캐싱: 데이터 캐싱

黄舟
黄舟원래의
2017-02-15 09:15:201209검색



데이터 캐싱은 일부 PHP 변수를 캐시에 저장한 다음 나중에 캐시에서 검색합니다. 이를 위해 캐싱 구성 요소의 기본 클래스 CCache는 가장 일반적으로 사용되는 두 가지 메서드인 set() 및 get()을 제공합니다.

변수 $value를 캐시에 저장하려면 고유 ID를 선택하고 set()을 호출하여 이를 저장합니다.


Yii::app()->cache->set($id, $value);

캐시된 데이터는 일부 캐싱 정책으로 인해 삭제되지 않는 한 캐시에 남아 있습니다(예: 캐시 공간이 가득 차거나 오래된 데이터가 삭제됨). 이 동작을 변경하려면 set()을 호출할 때 만료 매개변수를 제공하여 설정된 시간이 지나면 캐시된 데이터가 지워지도록 할 수 있습니다.


// 值$value 在缓存中最多保留30秒
Yii::app()->cache->set($id, $value, 30);

나중에 (동일하거나 다른 웹 요청에서) 이 변수에 액세스해야 할 때 ID로 get()을 호출하여 캐시에서 다시 가져올 수 있습니다. false가 반환되면 이 값을 캐시에서 사용할 수 없으며 다시 생성해야 함을 의미합니다.


$value=Yii::app()->cache->get($id);
if($value===false)
{
    // 因为在缓存中没找到 $value ,重新生成它 ,
    // 并将它存入缓存以备以后使用:
    // Yii::app()->cache->set($id,$value);
}

캐시할 변수의 ID를 선택할 때 이 ID가 캐시된 다른 모든 변수와 일치하는지 확인하세요. 애플리케이션의 변수는 고유합니다. 이 ID는 서로 다른 애플리케이션 간에 고유할 필요는 없습니다. 캐싱 구성 요소는 서로 다른 애플리케이션의 ID를 구별할 수 있을 만큼 똑똑합니다.

MemCache, APC와 같은 일부 캐시 메모리는 일괄 모드에서 여러 캐시 값 가져오기를 지원합니다. 이렇게 하면 캐시된 데이터를 검색하는 오버헤드가 줄어듭니다. 버전 1.0.8부터 Yii는 mget()이라는 새로운 메서드를 제공합니다. 이 기능을 활용할 수 있습니다. 기본 캐시 메모리가 이 기능을 지원하지 않는 경우 mget()는 계속해서 이를 시뮬레이션할 수 있습니다.

캐시에서 캐시된 값을 지우려면 delete()를 호출하고 캐시의 모든 데이터를 지우려면 flash()를 호출합니다. 다른 응용 프로그램의 캐시도 지워지므로 플러시()를 호출할 때는 주의하세요.

팁: CCache는 ArrayAccess을 구현하므로 캐시 구성 요소도 배열처럼 사용할 수 있습니다. 다음은 몇 가지 예입니다.


$cache=Yii::app()->cache;
$cache['var1']=$value1;  // 相当于: $cache->set('var1',$value1);
$value2=$cache['var2'];  // 相当于: $value2=$cache->get('var2');

캐시 종속성

만료 설정 외에도 , 종속 조건의 변경으로 인해 캐싱 데이터가 무효화될 수도 있습니다. 예를 들어, 특정 파일의 내용을 캐시하고 해당 파일이 변경되면 캐시된 데이터를 무효화하고 캐시가 아닌 파일에서 최신 내용을 읽어야 합니다.

우리는 종속성을 CCacheDependency의 인스턴스 또는 해당 하위 클래스 중 하나로 나타냅니다. set()을 호출할 때 캐시할 데이터와 함께 이를 전달합니다.


// 此值将在30秒后失效
// 也可能因依赖的文件发生了变化而更快失效
Yii::app()->cache->set($id, $value, 30, new CFileCacheDependency('FileName'));

이제 get()을 호출하여 캐시에서 $value를 가져오면 종속성이 검사됩니다. 변경이 발생하면 데이터를 다시 생성해야 함을 나타내는 잘못된 값을 얻게 됩니다.

다음은 사용 가능한 캐시 종속성에 대한 간략한 설명입니다.

  • CFileCacheDependency: 파일의 마지막 수정 시간이 변경되면 종속성이 변경됩니다.

  • CDirectoryCacheDependency: 디렉터리와 해당 하위 디렉터리의 파일이 변경되면 종속성이 변경됩니다.

  • CDbCacheDependency: 지정된 SQL 문의 쿼리 결과가 변경되면 종속성이 변경됩니다.

  • CGlobalStateCacheDependency: 지정된 전역 상태가 변경되면 종속성이 변경됩니다. 전역 상태는 애플리케이션의 교차 요청, 교차 세션 변수입니다. 이는 CApplication::setGlobalState()를 통해 정의됩니다.

  • CChainedCacheDependency: 체인의 종속성이 변경되면 이 종속성이 변경됩니다.

  • CExpressionDependency: 지정된 PHP 표현식의 결과가 변경되면 종속성이 변경됩니다. 이 클래스는 버전 1.0.4부터 사용할 수 있습니다.

위 내용은 Yii Framework 공식 가이드 부록 시리즈 29 - 캐시: 데이터 캐시입니다. 자세한 내용은 PHP 중국어 웹사이트(www.php.cn)를 참고하세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.