Di solito lo faccio:Utilizzando memcache.add() al posto del set()
if not memcache.get('mykey'):
memcache.set('mykey', item)
Tuttavia, oggi ho visto memcache.add()
, che sembra aggiungere un elemento solo se non esiste già. Quindi questo è equivalente al codice che ho sopra? Posso semplicemente sostituire il codice sopra con memcache.add()
?
Inoltre, e cosa più importante, sto usando AppStats, e sotto RPC Tracce di chiamata, ottengo di vedere se la mia richiesta chiama memcache.set()
o get()
o datastore.put()
o get()
. Quando si utilizzano le 2 righe di codice sopra, non vedo nulla per memcache.set()
, che è previsto. Tuttavia, utilizzando solo memcache.add()
(senza verificare se l'elemento esiste già) chiama sempre memcache.set()
, anche se memcache.add()
ha restituito false (ovvero non è stato inserito un nuovo elemento). Perché è così?
Dovresti dare un'occhiata al [codice sorgente] (http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/memcache/__init__.py#761 :) :) –
@PaoloMoretti grazie per il link..che cosa esattamente sto cercando .. – Snowman
Questa domanda (o una simile) è già stata richiesta su StackOverflow prima, vorrei dirigerti anche tu - http: // StackOverflow. it/questions/2678339/memcached-which-is-faster-doing-an-add-and-checking-result-or-doing-a-get - http://serverfault.com/questions/291681/add-vs- set-in-memcached –