我的应用程序中有很多线程试图在memcache中放入相同的密钥。我需要做的是,一旦一个线程设法放入该密钥,那么没有其他线程可以再次放置该密钥。
我遇到过memCache提供的一些机制,比如putIFUnTouched
,我试图这样使用:
IdentifiableValue value = memCache.getIdentifiable("item_id");
mc.putIfUnTouched("item_id", null, "user_id");
但它给了我这个例外:oldValue mustn't be null
。
我还发现了CAS
,我现在很困惑在这种情况下我需要使用哪一个。
提前致谢。
答案 0 :(得分:1)
我找到了答案:
memCache.put("key", "object", Expiration.byDeltaSeconds(10000), MemcacheService.SetPolicy.ADD_ONLY_IF_NOT_PRESENT);