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?
2
A
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 retourneratrue
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.
Merci Attila, utilisera vos hacks pour créer une méthode d'extension ContainsKey avec un bon entretien. :) – MindWire
si vous pouvez me l'envoyer comme une demande de traction je vais inclure dans la prochaine version. –