if not memcache.get('mykey'):
memcache.set('mykey', item)
不过,今天我看到了memcache.add()
,这似乎只添加如果它不存在的项目。那么这是否等同于我上面的代码?我可以用memcache.add()
替换上面的代码吗?
而且,更重要的是,我将Appstats,并在RPC调用跟踪,我去看看我的请求调用memcache.set()
或get()
或datastore.put()
或get()
。当使用上面的两行代码时,我没有看到任何memcache.set()
,这是预期的。但是,仅使用memcache.add()
(不检查项目是否已存在)始终会调用memcache.set()
,即使memcache.add()
返回false(表示未插入新项目)。为什么会这样?
您应该查看[源代码](http://code.google.com/p/googleappengine/source/browse/trunk/python/google/appengine/api/memcache/__init__.py#761 ):) –
@PaoloMoretti谢谢你的链接..我正在找什么.. – Snowman
这个问题(或者一个类似的)已经被问到在stackoverflow之前,我想指导你 - http:// stackoverflow。 com/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 –