Google App Engine - Memcache - Python的client.add的Java版本?

时间:2010-04-09 16:42:20

标签: java google-app-engine memcached

memcache的python接口有一个add方法:

  

add(key,value,time = 0,min_compress_len = 0,namespace = None)

     

当且仅当项目不在memcache中时,设置键的值。 ...

     

如果添加则返回值为True,错误时返回False。

因此,如果该项目不存在,您可以添加该项目,并查看该项目以前是否存在返回值。

与此相同的java memcache api不会让您知道是否有以前的值:

  

put(key,value,expiration,   MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT);

     

MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT:   如果密钥没有值,则添加值,如果密钥存在则不执行任何操作

有没有办法知道java api是否存在以前的值?我不能事先检查contains方法,因为在调用contains和调用put之间,另一个JVM实例可以修改内存缓存。

1 个答案:

答案 0 :(得分:0)

docs说:

  

put()方法不返回键的先前已知值。它总是返回null。

因此,如果您想在调用put()之前知道它是否存在,我只需事先致电contains()

如果您担心其他呼叫者在您的两个呼叫之间插入某些内容,您可能会过分依赖Memcache的可靠性。 Memcache并不是存储重要数据的可靠场所,就像用于更昂贵操作的缓存一样(例如,数据存储读取,urlfetches)。

请记住,Memcache可以随时清空,出于任何原因,您的应用需要考虑到这一事实。