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实例可以修改内存缓存。
答案 0 :(得分:0)
docs说:
put()方法不返回键的先前已知值。它总是返回null。
因此,如果您想在调用put()
之前知道它是否存在,我只需事先致电contains()
。
如果您担心其他呼叫者在您的两个呼叫之间插入某些内容,您可能会过分依赖Memcache的可靠性。 Memcache并不是存储重要数据的可靠场所,就像用于更昂贵操作的缓存一样(例如,数据存储读取,urlfetches)。
请记住,Memcache可以随时清空,出于任何原因,您的应用需要考虑到这一事实。