2016-06-13 7 views
4

RedisにNull値を保存するためにStackExchange.Redisクライアントを使用する方法はありますか?RedisでNull値を保存するのにStackExchange.Redisを使用できますか?

IDatabase.StringGet(key)を使用する場合、Nullの戻り値は「結果がありません」という意味で使用されます。したがってIDatabase.StringSet(key, null)を使用した場合、結果はNull値かいいえ値があるかどうかわかりません。

ケータリングの仕組みはありますか?つまり、キャッシュする必要があります負のです。

値が一致した場合に後で問題を引き起こす可能性のある悪意のあるセンチネル値(value ?? new byte[] {1}など)を避けたいと思っていました。

私はRedisValue.Nullを見ましたが、これは上記と同じ問題を持つNullを生成します。

+0

あなたのユースケースは何ですか?キーに対してnullを格納する理由は何ですか? – zendu

+1

私のキャッシュ層は、DBへの呼び出しを減らします。私は私のDBから結果がキャッシュされないようにするために、その結​​果をキャッシュしたいので、次回のコールがキャッシュにのみヒットするようにします(「データが空です」という結果が出ます)。現時点では、null応答はキャッシュに結果がないことを示しています。そのため、DBに行き、「何も」結果を取得しません。 – OffHeGoes

答えて

0

これは、通常nullであるジレンマです。私たちは同様の状況を抱えており、ここではそれらをどのように扱っていますか? 1.バックエンドシステムから日付のリストを取得し、キャッシュに保存しました。日付が取得されなかった場合はDALクラスがnullを返し、バックエンドシステムと通信する際にエラー/タイムアウトが発生した場合は例外がスローされました。ヌル値をキャッシュするために、nullを空のリストに置き換えました。これは、まだ利用可能な日付がないことを示しました。 2.ユーザーの設定をバックエンドの文字列として保存していました。ヌル値は、ユーザーがプリファレンスを設定していないことを示します。これをキャッシュするために、ユースケースでは決して発生しない特殊な文字列値をキャッシュしました。いいえ、優先度などです。

HTH。

関連する問題