2012-11-14 4 views
0

여러 사용자가 동시에 캐시를 덮어 쓰는 문제를 설명하는 비디오를 보았습니다.이 대화 상대는 compare를 사용하여이 (http://www.udacity.com/wiki/CS253%20Unit%206?course=cs253#cas)을 사용하도록 제안합니다.django에서 캐시를 사용하여 비교하고 설정했습니다.

그는 두 가지 방법

gets(key) → value, unique 
cas(key, value, unique) → True/False 

from google.appengine.api import memcache 

val, unique = memcache.gets(key) 
r = memcache.cas(key, newval, unique) 
while r == False: 
    unique, val = memcache.gets(key) 
    r = memcache.cas(key, newval, unique) 

언급되어 django cache에서 사용할 수있는이 같은? 또는이 googleappengine 특정입니까? . 누군가가 이것을 어떻게 사용할 수 있는지 제안 할 수 있습니까? django cache

+0

해결하려는 문제는 무엇입니까? 여기에서 비디오를 바꾸어서 링크해야합니다. 그것은 당신이 GAE와 다른 곳에서 memcached를 사용할 가능성이 매우 높으므로 동일한 시설을 사용할 수 있지만 더 많은 정보없이 말하기는 어렵습니다. – dokkaebi

+0

님이 기사에 대한 링크를 추가했습니다. – damon

답변

1

일반적인 Django 캐싱 프레임 워크를 사용하는 경우에는 불가능합니다. MemCache 만 사용하는 경우 this question on Django Memcache: Compare and Set이 필요합니다.

그러나 CAS는 여러 사용자가 동일한 캐시 값을 설정하는 문제를 해결하지만 트래픽이 많은 환경에서는 문제가 될뿐입니다. 한 달에 한 번 또는 두 번 캐시 미스 및 업데이트가 동시에 발생하면 CAS를 무시하는 것이 좋습니다.

계산 된 값이 인 경우 실제로 인 경우 결과를 계산하고 캐시에 저장하고 캐시 만료 전에 실행하는 별도의 백그라운드 작업을 생각할 수도 있습니다. 이 경우 사용자는 캐시 실패를 경험하지 않으며 전체 CAS 문제는 부적절하게됩니다.

관련 문제