2010-12-01 6 views
2

Membase Client(Enyim)を使用してキーが存在するかどうかを確認する方法を知っている人はいますか?私はキャッシュからオブジェクト全体を引っ張ってはいけません。ちょうどそこにあるかどうかを確認してください。Membaseクライアント - ContainsKey?

答えて

3

は、残念ながらはmemcachedの動作を「存在」が存在しませんが、あなたが行うことができますいくつかのハッキングがあります。

  • 項目がすでに存在する場合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)これは、アイテムが存在する場合にも失敗します。

キーが存在しない場合は、それらの後にクリーンアップする必要があるように、すべての3つの操作は、アイテムを作成しますのでご注意下さい。

また、複数のスレッドが同じアイテムをチェックしている場合、あるスレッドが別のスレッドの一時アイテムを実際のものとして扱う可能性があります。

+0

Thanks Attila、あなたのハッキングを使用して、適切なハウスキーピングでContainsKey拡張メソッドを作成します。 :) – MindWire

+0

あなたが私に次のバージョンに含めることを要求するプルとして私に送ることができるならば。 –

関連する問題