【发布时间】:2010-12-01 16:05:49
【问题描述】:
有谁知道如何使用 Membase Client (Enyim) 检查密钥是否存在?我不想从缓存中拉出整个对象,只需检查它是否在其中。
【问题讨论】:
标签: membase
有谁知道如何使用 Membase Client (Enyim) 检查密钥是否存在?我不想从缓存中拉出整个对象,只需检查它是否在其中。
【问题讨论】:
标签: membase
不幸的是,memcached 中没有“exists”操作,但您可以做一些 hack:
client.Store(StoreMode.Add, keyToCheck, null, new Date(2000, 1, 1)); 添加失败,在这种情况下将返回 false。client.Append(keyToCheck, new ArraySegment<byte>(new byte[0])) 如果键存在,这将返回true,但它的值不会改变。client.Cas(StoreMode.Set, keyToCheck, null, UInt64.MaxValue)如果项目存在,这也会失败。请记住,如果密钥不存在,所有三个操作都会创建一个项目,因此您需要在它们之后进行清理。
另外,如果多个线程正在检查同一个项目,那么一个线程可能会将另一个线程的临时项目视为真实的。
【讨论】: