Кто-нибудь знает, как проверить, существует ли ключ с помощью Membase Client (Enyim)? Я не хочу вытащить весь объект из кеша, просто проверьте его там.Клиент Membase - ContainsKey?
2
A
ответ
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)
Это также сбой, если элемент существует.
Пожалуйста, имейте в виду, что все три операции создаст элемент, если ключ не существует, так что вы должны убирать за ними.
Кроме того, если несколько потоков проверяют один и тот же элемент, то возможно, что один поток будет обрабатывать другой поток темпа как реальный.
Спасибо Attila, будет использовать ваши хаки для создания метода расширения ContainsKey с надлежащей уборка. :) – MindWire 2010-12-01 20:06:15