2010-12-01 19 views
2

Est-ce que quelqu'un sait comment vérifier si une clé existe en utilisant Membase Client (Enyim)? Je ne veux pas tirer l'objet entier du cache, vérifiez juste s'il est là dedans.Client Membase - ContainsKey?

Répondre

3

Malheureusement, il n'y a pas de « existe » opération memcached, mais il y a des hacks que vous pouvez faire:

  • font un client.Store(StoreMode.Add, keyToCheck, null, new Date(2000, 1, 1)); Ajouter échoue si l'élément existe déjà, et retournera faux dans ce cas.
  • vous pouvez client.Append(keyToCheck, new ArraySegment<byte>(new byte[0])) Cela retournera true si la clé existe, mais sa valeur ne changera pas.
  • ou client.Cas(StoreMode.Set, keyToCheck, null, UInt64.MaxValue) Cela échouera également si l'élément existe.

S'il vous plaît garder à l'esprit que les trois opérations vont créer un élément si la clé n'existe pas, donc vous devez nettoyer après eux.

De même, si plusieurs threads recherchent le même élément, il est possible qu'un thread traite un autre élément temporaire thread comme le vrai.

+0

Merci Attila, utilisera vos hacks pour créer une méthode d'extension ContainsKey avec un bon entretien. :) – MindWire

+0

si vous pouvez me l'envoyer comme une demande de traction je vais inclure dans la prochaine version. –