2011-11-11 3 views
1

memcache를 사용하여 json을 저장하면 작동합니다. 그러나 문제는 내가 몇 번 이상 그 라인을 호출하는 경우 캐시 크기가 증가한다는 것입니다 : 임 캐시에 이미 키를 사용하기 때문에 AppEngine Memcache에 기능 추가

memcache.Client.add(memcache.Client(),"searchindex",json) 

는 그래서는 memcache에 시청자 여전히 동일한 콘텐츠를 바라 보았다. 그러나 캐시의 크기가 계속 증가하더라도.

답변

5

처음에는 인스턴스 메서드를 호출하는 정말 이상한 방법입니다. 일반적으로이 작업을 수행합니다 : 단순히

memcache.Client().add("searchindex", json) 

또는를 : 응용 프로그램의 동작에 영향을 안 반복적으로 호출, 이미 캐시에 존재하는 키를 덮어 쓰지 않습니다

memcache.add("searchindex", json) 

add입니다.

이러한 호출이 캐시 크기를 늘릴 지 여부는 실제로 걱정할 필요가 없습니다. Memcache는 최소한의 사용 알고리즘에 기반하여 응용 프로그램에서 필요에 따라 메모리를 사용할 수 있도록 설계되었습니다. 정크 메모리가 비활성 상태 일 때 add 호출이 확실히 제거되어야합니다.

+1

나는 memcache 크기가 늘어나는 것에 대해 염려했습니다. 왜냐하면 appengine에서 비용이 청구 되었기 때문입니다. 공간 낭비를 피할 방법이 없습니다. – user1042043

+0

어떤 의미에서 기억을 청구합니까? 인스턴스 시간에는 요금이 청구되고 인스턴스에는 고정 된 양의 메모리가 있습니다. 메모리가 부족하면 memcache는 부실 데이터를 제거하고 응용 프로그램에 메모리를 반환해야합니다. 나는 이것이 어떻게 당신에게 더 많이 청구되게 할 것이지 보지 못한다. –

+1

memcache 비용이 부과되지 않습니다. –