2010-12-01 1 views
2

Кто-нибудь знает, как проверить, существует ли ключ с помощью Membase Client (Enyim)? Я не хочу вытащить весь объект из кеша, просто проверьте его там.Клиент Membase - ContainsKey?

ответ

3

К сожалению, нет «существует» операция в Memcached, но есть некоторые писаки вы можете сделать:

  • сделать client.Store(StoreMode.Add, keyToCheck, null, new Date(2000, 1, 1)); Add терпит неудачу, если элемент уже существует, и будет возвращать ложь в этом случае.
  • вы можете client.Append(keyToCheck, new ArraySegment<byte>(new byte[0])) Это приведет к возврату true, если ключ существует, но его значение не изменится.
  • или client.Cas(StoreMode.Set, keyToCheck, null, UInt64.MaxValue) Это также сбой, если элемент существует.

Пожалуйста, имейте в виду, что все три операции создаст элемент, если ключ не существует, так что вы должны убирать за ними.

Кроме того, если несколько потоков проверяют один и тот же элемент, то возможно, что один поток будет обрабатывать другой поток темпа как реальный.

+0

Спасибо Attila, будет использовать ваши хаки для создания метода расширения ContainsKey с надлежащей уборка. :) – MindWire 2010-12-01 20:06:15