>  기사  >  백엔드 개발  >  PHP와 함께 제공되는 캐싱 시스템에 대한 자세한 소개: APCu 확장

PHP와 함께 제공되는 캐싱 시스템에 대한 자세한 소개: APCu 확장

醉折花枝作酒筹
醉折花枝作酒筹앞으로
2021-06-09 17:06:083070검색

이 글에서는 PHP: APCu 확장과 함께 제공되는 캐싱 시스템을 자세히 소개합니다. 도움이 필요한 친구들이 모두 참고할 수 있기를 바랍니다.

PHP와 함께 제공되는 캐싱 시스템에 대한 자세한 소개: APCu 확장

모든 분들이 일상적인 캐싱을 위해, 또는 트래픽을 방지하기 위해, 또는 일반적으로 사용되는 일부 핫 데이터를 저장하기 위해 memcached 또는 redis와 같은 캐싱 시스템을 사용해 보셨을 거라 생각합니다. 실제로 소규모 프로젝트에서는 PHP를 사용하기도 했습니다. 일상적인 일반 규모 사이트의 개발을 완벽하게 처리할 수 있는 간단한 캐싱 시스템을 준비했습니다. 이 확장 세트는 APCu 확장입니다.

APCu 확장

APCu 확장은 더 이상 유지 관리되지 않는 APC 확장의 업그레이드입니다. 두 확장 세트 모두 실제로 opcode 캐싱을 기반으로 합니다. 즉, PHP 자체 opcode로 구현된 캐싱 기능입니다.

APCu의 설치는 일반적인 PHP 확장과 동일합니다. 가장 중요한 것은 이 확장이 매우 작다는 것입니다. 다운로드와 설치 모두 몇 초 안에 완료될 수 있습니다. 따라서 소규모 프로젝트에 매우 편리하게 적용할 수 있으며, PHP에서 기본적으로 지원되므로 포트 등의 추가 구성이 필요하지 않습니다.

방법 설명

캐시 시스템이 일반적으로 가지고 있는 추가, 삭제, 쿼리, 자동 증가 및 기타 기능은 APCu 확장에 해당 구현이 있습니다.

  • apcu_add — 새 캐시 생성

  • apcu_cache_info — APCu의 모든 캐시 정보 보기

  • apcu_cas — 캐시된 값을 새 값으로 업데이트

  • apcu_clear_cache — 모든 캐시 지우기

  • apcu_dec - 캐시 값 감소

  • APCU_DELETE - 캐시 된 컨텐츠 삭제

  • APCU_ENABLE- 현재 환경에서 APCU 캐시 활성화 여부에 관계 캐시가 존재합니다

  • apcu_fetch — 캐시 쿼리

  • apcu_inc — 캐시 값 자동 증가

  • apcu_sma_info — 캐시된 공유 메모리 정보 쿼리

  • apcu_store — 캐시 저장

  • Usage Demo
  • apcu_add("int", 1);
    apcu_add("string", "I'm String");
    apcu_add("arr", [1,2,3]);
    
    class A{
        private $apc = 1;
        function test(){
            echo "s";
        }
    }
    
    apcu_add("obj", new A);
    
    var_dump(apcu_fetch("int"));
    var_dump(apcu_fetch("string"));
    var_dump(apcu_fetch("arr"));
    var_dump(apcu_fetch("obj"));

    일반적인 사용은 비교적 간단합니다. 우리가 추가하는 모든 유형의 데이터는 정상적으로 캐시에 저장될 수 있습니다. 그러나 객체를 직렬화하지 않고 APCu 캐시에 직접 저장하거나 JSON을 문자열로 저장할 수 있다는 점에 유의해야 합니다.

  • apcu_add(string $key, Mixed $var [, int $ttl = 0]) 방법은 일반적으로 캐시를 추가하는 것입니다. $ttl은 만료 시간을 초 단위로 설정할 수 있습니다. 오랫동안 유효합니다. APCu의 캐시 시간 제한은 한 CLI에서 유효합니다. CLI를 다시 호출하면 마지막 CLI에 설정된 캐시 콘텐츠가 가져오지 않습니다. PHP-FPM에서는 PHP-FPM 또는 FastCGI를 다시 시작한 후 캐시가 무효화됩니다.

다음으로 몇 가지 덜 일반적인 방법을 테스트하는 데 중점을 둘 것입니다.
apcu_cas("int", 1, 2);
var_dump(apcu_fetch("int"));

// Warning  apcu_cas() expects parameter 2 to be int
apcu_cas("string", "I'm String", "I'm  New String");
apcu_cas(string $key, int $old, int $new)는 $old 값을 $new 값으로 수정하는 것입니다. 문자열 수정인 경우에만 오류가 발생합니다. 보고됩니다. 이 기능의 장점은 무엇입니까? 가장 큰 장점은 원자성, 즉 높은 동시성에 영향을 받지 않는다는 것입니다. apcu_store(string $key, mix $var [, int $ttl = 0]) 메소드와 유사하지만 이 메소드는 단순히 캐시의 내용을 수정하는 것뿐입니다. 캐시 키가 존재하지 않으면 새 키를 생성하십시오. 유형에 의해 제한되지 않으며 확실히 원자적이지 않습니다.

apcu_entry("entry", function($key){
    return "This is " . $key;
});
var_dump(apcu_fetch("entry"));

apcu_entry(string $key , callable $generator [, int $ttl = 0 ]) 이 함수의 기능은 $generator 익명 함수를 실행하고 $key 캐시가 존재하지 않는 경우 $key를 키 값으로 사용하는 것입니다. 이를 전달한 다음 이 캐시의 값으로 콘텐츠를 생성하거나 반환합니다.

var_dump(apcu_cache_info());

마지막으로 현재 시스템의 모든 APCu 캐시 정보를 보려면 apcu_cache_info() 함수를 직접 사용할 수 있습니다.

요약

캐시에 데이터가 많은 경우 루프 쿼리 및 캐시 정보 관련 통계를 쉽게 수행할 수 있도록 APCUIterator 반복자를 제공합니다. 간단히 말해서, 이 시스템은 매우 편리한 소규모 캐싱 시스템이며 일상적인 개발에서 몇 가지 작은 기능을 사용해 볼 수 있습니다.

테스트 코드:

https://github.com/zhangyue0503/dev-blog/blob/master/php/202004/source/%E6%88%91%E4%BB%AC%E4%B9%9F%E6%9C%89%E8%87%AA%E5%B8%A6%E7%9A%84%E7%BC%93%E5%AD%98%E7%B3%BB%E7%BB%9F%EF%BC%9APHP%E7%9A%84APCu%E6%89%A9%E5%B1%95.php

추천 학습: php 비디오 튜토리얼

위 내용은 PHP와 함께 제공되는 캐싱 시스템에 대한 자세한 소개: APCu 확장의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제