2010-04-09 65 views
1

Python接口到內存緩存具有add方法:Google App Engine - Memcache - Python的client.add的Java版本?

加(鍵,值,時間= 0,min_compress_len = 0,命名空間=無)

設置鍵的值,當且僅當該項目不在memcache中。 ...

如果添加,則返回值爲True,錯誤時爲False。

因此,如果它不存在,您可以添加一個項目,並查看它是否以前存在的返回值。

的Java的內存緩存API相當於該不會讓你知道,如果有一個以前的值或不:

放(鍵,值,過期, MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT);

MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT: 添加值,如果用鑰匙沒有價值,什麼也不做,如果鍵存在

有沒有辦法知道,如果存在一個以前的值或者不與Java API的?我不能事先檢查contains方法,因爲在調用contains和調用put之間,另一個JVM實例可能會修改內存緩存。

回答

0

docs說:

的put()方法不適用於一鍵返回上一已知值。它總是返回null。

因此,如果您想在致電put()之前知道它是否存在,我會事先致電。

如果您擔心其他調用者在兩次調用之間插入某些內容,您可能會過度依賴Memcache的可靠性。 Memcache並不意味着成爲存儲重要數據的可靠地方,就像緩存更昂貴的操作(例如數據存儲讀取,urlfetches)一樣。

請記住,無論出於何種原因,Memcache都可以隨時清空,並且您的應用需要考慮到這一事實。