와일드 카드 키에 따라 memcache의 항목을 무효화하는 방법이 있습니까?Memcache가 패턴에 따라 항목을 무효화합니까?
그래서 나는 다음과 memcache에 키가있는 경우 :
data/1
data/2
data/3
내가 data/*
같은 것을 가진 사람 키를 무효화 할 수있는 방법이 있나요를? 한 번에 많은 오래된 데이터를 제거하는 것이 매우 유용 할 것입니다.
와일드 카드 키에 따라 memcache의 항목을 무효화하는 방법이 있습니까?Memcache가 패턴에 따라 항목을 무효화합니까?
그래서 나는 다음과 memcache에 키가있는 경우 :
data/1
data/2
data/3
내가 data/*
같은 것을 가진 사람 키를 무효화 할 수있는 방법이 있나요를? 한 번에 많은 오래된 데이터를 제거하는 것이 매우 유용 할 것입니다.
가장 좋은 방법은 당신의 memcache에 키를 생성 할 때 버전 키를 제공하는 경우 : official wiki
그것을 해결하는 방법에 대한 제안이있다. 우리는 시스템에 키를 생성하는 단일 함수/메소드를 제공함으로써이를 수행합니다. 처음에
5:monkeyInfo:123:456
주목하라 '5':
$var1 = 123;
$var2 = 456;
$cacheKey = makeKey('monkeyInfo', $var1, $var2, ...);
makeKey()
는 cacheKeyVersions 배열 반환에있는 정보를 사용합니다. 그것은 keyNames => 버전의 하드 코딩 된 배열에서 온 것입니다. 따라서 우리가 시스템의 모든 'monkeyInfo'캐시 값을 무효화하려면 배열에서 해당 숫자를 6으로 변경하면됩니다. 그때부터 동일한 전화를 찾을 것입니다
6:monkeyInfo:123:456
다음은 키 버전 배열의 모습입니다. 'makeKey()
'호출은이 배열을 조사하여 주어진 키의 버전 번호를 가져옵니다.
$cacheKeyVersions = array(
'monkeyInfo' => 5,
'zebraInfo' => 2
);
귀하의 필요에 맞는 구현을하기 위해 모든 것을 할 수 있지만 그게 기본 요령입니다.
memcached는 네임 스페이스 삭제를 지원하지 않습니다.
또한 makeKey 함수/메소드에는 필요할 경우 전체 캐시를 플러시 할 수있는 전역 버전이 포함될 수 있습니다. 또는 키의 특정 도메인을 플러시하는 데 사용할 수도 있습니다. – conceptDawg
아주 능숙하게 작업을 수행 할 수 있습니다. 통찰력에 감사드립니다. – Kekoa
@ConceptDawg이 알고리즘을 구현할 라이브러리 (예 : PHP)가 있거나 알고 있습니까? – romaninsh