2

Membase Client (Enyim) を使用してキーが存在するかどうかを確認する方法を知っている人はいますか? キャッシュからオブジェクト全体を取得したくありません。そこにあるかどうかを確認するだけです。

4

1 に答える 1

3

残念ながら、memcached には「存在する」操作はありませんが、できるハックがいくつかあります。

  • アイテムが既に存在する場合、client.Store(StoreMode.Add, keyToCheck, null, new Date(2000, 1, 1));Add は失敗し、この場合は false を返します。
  • client.Append(keyToCheck, new ArraySegment<byte>(new byte[0]))これは、キーが存在する場合に返されますtrueが、その値は変更されません。
  • またはclient.Cas(StoreMode.Set, keyToCheck, null, UInt64.MaxValue)アイテムが存在する場合、これも失敗します。

キーが存在しない場合、3 つのすべての操作でアイテムが作成されるため、後でクリーンアップする必要があることに注意してください。

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

于 2010-12-01T19:48:52.223 に答える