【问题标题】:Membase Client - ContainsKey?Membase 客户端 - ContainsKey?
【发布时间】:2010-12-01 16:05:49
【问题描述】:

有谁知道如何使用 Membase Client (Enyim) 检查密钥是否存在?我不想从缓存中拉出整个对象,只需检查它是否在其中。

【问题讨论】:

    标签: membase


    【解决方案1】:

    不幸的是,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)如果项目存在,这也会失败。

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

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

    【讨论】:

    • 感谢 Attila,将使用您的技巧来制作具有适当内务管理的 ContainsKey 扩展方法。 :)
    • 如果您可以将其作为拉取请求发送给我,我将包含在下一个版本中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-29
    • 1970-01-01
    • 2011-05-15
    • 2017-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多