2016-08-17 3 views
1

와일드 카드를 기반으로 캐시 파일을 삭제하려면 Cache :: deleteMany() 함수를 사용하는 방법이 있습니까?Cakephp 3 Cache :: deleteMany() 와일드 카드 일치?

예를 들어 posts_2_20160801이라는 캐시 파일을 삭제하려면 첫 번째 숫자는 user_id이고 숫자 문자열은 날짜입니다. 따라서이 캐시 파일에는 지정된 날짜 이전에 사용자가 모든 게시물을 페이지 매김을 포함하고 있습니다.

그래서 user_id에 대한 캐시 파일을 삭제할 수 있기를 원합니다. 날짜가 거의 무엇이든 될 수 있기 때문에 와일드 카드가 필요합니다. Cache::deleteMany(['posts_2*']);

같은

뭔가 잘못된 방향으로이 작업을 수행하거나 내가이 생각하고있는 방법이 있나요.

답변

0

memcached에 대해 모르겠지만 파일 및 Redis 엔진은이 캐시 삭제 방법을 지원하지 않습니다.

내 솔루션은 케이크 (같은 RedisEngine 또는 FileEngine)의 원하는 캐시 엔진 클래스를 확장하는 클래스를 만들고 문자열이 배열 대신 전달 그래서 deleteMany 함수를 재정의하는 것이었다, 그것은 와일드 카드 검색을 수행하고 모든 반환 그런 다음 반환 된 키 배열을 부모 함수에 전달합니다.

나는 File 엔진과 Redis 엔진이 매우 까다로운 코딩 작업을 수행 할 수 있다는 것을 잘 알고 있으며 매우 신중해야합니다.