有谁知道如何使用 Membase Client (Enyim) 检查 key 是否存在?我不想从缓存中提取整个对象,只需检查它是否在其中。
最佳答案
不幸的是,memcached 中没有“exists”操作,但是您可以执行一些操作:
- 做一个
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)
如果该项目存在,这也会失败。
请记住,如果键不存在,所有三个操作都将创建一个项目,因此您需要在它们之后进行清理。
此外,如果多个线程正在检查同一项目,则一个线程可能会将另一个线程的临时项目视为真实的项目。
关于Membase 客户端 - 包含 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4326311/