Membase客户端 - ContainsKey?

时间:2010-12-01 16:05:50

标签: membase

有没有人知道如何使用Membase Client(Enyim)检查密钥是否存在?我不想从缓存中提取整个对象,只需检查它是否在那里。

1 个答案:

答案 0 :(得分:3)

不幸的是,memcached中没有“存在”操作,但是你可以做一些黑客攻击:

  • 执行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)如果项目存在,这也将失败。

请注意,如果密钥不存在,所有三项操作都会创建项目,因此您需要在它们之后进行清理。

此外,如果多个线程正在检查同一个项目,那么一个线程可能会将另一个线程临时项目视为真实项目。