0

ServiceStack が提供する Redis クライアントの v3 を使用しています。私は「デコレータ パターン」を実装しており、キャッシュ ミスがあった場合にデータのリポジトリを参照できるように、キャッシュ ロジックをリポジトリにラップするクラスを用意しています。問題はnull、エントリが存在するようにキャッシュに追加したいが、値がない場合があることです。これは、その値のデータベースにアクセスしないことを意味します。

私が知る必要があるのは、インターフェイスのキャッシュ ヒットのみのキー/値のマッピングを取得する方法があるかどうかです。IRedisClient

このインターフェイスを使用してキャッシュから値を取得するには、複数の方法があります。まず、方法を試してみましたGetAll<T>。これは、キャッシュからアイテムを返し、T存在しない場合はデフォルト値を返します。nullこれは、特定のキーのエントリを追加したように見えるため、役に立ちません。

次に試しGetValuesてみましたが、見つかった値のみが返され、関連するキーは返されません。

最後に、試してみGetValuesMap<T>ましたが、これはまったく同じように動作するようGetAll<T>です。

キャッシュヒットのみのマッピングを取得する方法を知っている人はいますか?

ありがとう!

4

1 に答える 1

0

IRedisClient には、Get を試行する前にこれを確認できる、 ContainsKey(string key)というメソッドがあります。

ContainsKey が true を返した場合、null 値が返された場合は、それを自分で追加したことがわかります。

于 2015-03-04T21:32:22.787 に答える