Zazwyczaj robię:Korzystanie memcache.add() zamiast zestawu()
if not memcache.get('mykey'):
memcache.set('mykey', item)
Jednak dzisiaj widziałem memcache.add()
, który pojawia się, aby dodać element tylko wtedy, gdy nie istnieje. Czy to jest odpowiednik kodu, który mam powyżej? Czy mogę po prostu zamienić powyższy kod na memcache.add()
?
także, co ważniejsze, używam AppStats i pod RPC połączeń Ślady, mogę sprawdzić, czy mój wniosek wzywa memcache.set()
lub get()
lub datastore.put()
lub get()
. Gdy używasz 2 linii kodu powyżej, nie widzę niczego dla memcache.set()
, co jest oczekiwane. Jednak użycie tylko memcache.add()
(bez sprawdzania, czy element już istnieje) zawsze wywołuje memcache.set()
, mimo że memcache.add()
zwrócił wartość false (co oznacza, że nowy element nie został wstawiony). Dlaczego tak jest?
Powinieneś rzucić okiem na [kod źródłowy] (http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/memcache/__init__.py#761) :) –
@PaoloMoretti dzięki za link .. co dokładnie szukam .. – Snowman
To pytanie (lub jedno podobne) zostało już zadane na stackoverflow przed, chciałbym skierować też - http: // stackoverflow. com/questions/2678339/memcached-który-jest-szybciej-robi-i-sprawdzenie-wynik-lub-robi-a-get - http://serverfault.com/questions/291681/add-vs- zestaw w memcached –