이전에 Laravel 4 프레임워크에서 Alibaba Cloud OCS 캐시 사용이라는 기사를 썼는데, 이 기사에서는 SASL 인증이 필요한 Alibaba Cloud OCS 캐시 서비스를 지원하도록 Laravel 4를 확장하는 방법을 소개했습니다. 일부 네티즌들이 Laravel 4에서 ACE의 캐시를 어떻게 사용하는지 문의해 주셨습니다. 원래는 같은 방법을 사용해야 한다고 생각했는데, 직접 시도해 보니 ACE의 캐시가 많이 다르다는 것을 발견했습니다. 그래서 Laravel 프레임워크에서 Alibaba Cloud ACE의 캐싱 서비스를 사용하는 방법을 소개하는 글을 또 작성하겠습니다.
Laravel의 캐시 드라이버 확장 방법
Laravel 4에서 Cache::get($key), Cache::put($key, $value, $ Minutes)와 같은 코드를 사용하면 실제로 인스턴스화된 IlluminateCacheRepository에 액세스하므로 Cache를 전달합니다. 메소드는 사용자 정의 캐시 드라이버를 확장하는 경우 IlluminateCacheRepository 객체도 반환해야 합니다.
Laravel 4에 내장된 Memcached 캐시 드라이버의 구현 과정은 다음과 같습니다.
1. 표준 Memcached 클래스의 새 객체를 생성합니다
2. 이전 단계에서 생성된 Memcached 객체를 사용하여 IlluminateCacheStoreInterface 인터페이스를 구현하는 IlluminateCacheMemecachedStore 객체를 생성합니다.
3. 이전 단계에서 생성된 MemcachedStore 객체를 사용하여 IlluminateCacheRepository 객체를 생성합니다.
따라서 사용자 정의 캐시 드라이버를 확장할 때 위 단계 중 하나를 선택하여 상황에 따라 사용자 정의하고 궁극적으로 IlluminateCacheRepository 객체를 반환합니다. 예를 들어 이전 글 에서 첫 번째 단계에서는 표준 Memcached 객체를 생성한 후 setSaslAuthData() 메서드를 통해 OCS에서 요구하는 사용자 이름과 비밀번호를 설정했습니다. 이후 2단계와 3단계를 사용자 정의할 필요가 없습니다.
ACE의 캐싱 서비스
Alibaba Cloud ACE의 캐싱 서비스는 기본 OCS와 다릅니다.
1. Alibaba::Cache() 메서드를 통해 Cache 객체를 얻습니다.
2.ACE의 Cache 개체는 표준 Memcached 개체와 다르며 제한된 방법을 지원합니다.
그래서 이번에 첫 번째 단계에서 얻는 것은 표준 Memcached 객체가 아니므로 IlluminateCacheMemcachedStore 객체를 생성할 수 없습니다. IlluminateCacheStoreInterface 인터페이스를 직접 구현해야 합니다.
콘솔에서 캐시 공간이 생성되면 고유한 "캐시 공간 이름"이 생성되며, Alibaba::Cache('캐시 공간 이름')을 통해 Cache 개체를 얻습니다. ACE 캐시 서비스 드라이버를 구현하는 단계는 다음과 같습니다.
1. 수정을 용이하게 하기 위해 app/config/cache.php 구성 파일에 ace라는 키를 추가하여 캐시 공간 이름을 저장했습니다.
2. 그런 다음 IlluminateCacheStoreInterface 인터페이스를 구현하는 AceMemcachedStore 클래스를 생성합니다.
3. 마지막으로 AceMemcachedStore 객체를 사용하여 IlluminateCacheRepository 객체를 생성합니다.
구체적인 코드 구현을 살펴보겠습니다.
사용자 정의 ACE 캐시 드라이버를 구현하기 위한 코딩:
첫 번째 단계는 구성 파일을 수정하는 것입니다. app/config/cache.php를 열고 끝에 다음 줄을 추가하세요:
1. app의 동일한 레벨 디렉터리에 src/Ace 디렉터리를 만듭니다.
2. 작곡가.json 파일을 열고 자동 로드 섹션을 수정한 후 클래스맵 아래 psr-0 또는 psr-4를 사용하여 파일을 자동으로 로드합니다.
다음 코드를 사용하여 src/Ace/AceMemcachedStore.php 파일을 생성합니다.
이 코드는 비교적 간단하지만 get($key) 메소드 구현에 특별한 주의를 기울여야 합니다. 표준 memcached 및 ACE 캐시 객체의 get 메소드는 키가 유효할 때 해당 캐시 값을 반환하고 그렇지 않으면 false를 반환합니다. Laravel 4에서는 get 메소드가 null을 반환하는지 여부를 감지하여 판단하므로 여기서 처리해야 합니다. . 캐시된 값 또는 null을 반환합니다.
AceMemcachedStore 클래스가 생성되었습니다. 다음으로 bootstrap/start.php 파일에서 캐시를 확장하세요.
bootstrap/start.php를 열고 다음 코드를 추가하세요.
시스템이 'ace'를 캐시 드라이버로 사용하도록 지정합니다. app/config/cache.php를 열고 'driver' => '...' 행을 찾아 'driver' => '로 수정합니다. 에이스'
이용 및 제한
위 작업을 통해 Laravel 4에서 ACE의 캐시 서비스를 호출할 수 있으며 사용법은 다음과 같이 일반적인 사용법과 완전히 동일합니다.
그러나 ACE 캐시 객체 자체의 한계로 인해 지정된 키를 가진 캐시 객체는 삭제만 가능하고, 순회하거나 완전하게 동작할 수 없으므로 Cache::flush() 메서드를 사용할 수 없습니다. 위의 AceMemcachedStore 개체에서 플러시 메서드는 아무 작업도 수행하지 않고 false를 반환합니다.