3

高速検索用の辞書をキャッシュに格納する場合、2 つのオプションを考えることができます。辞書全体をキャッシュ アイテムとして格納するか、キャッシュ キーの前に識別子を付けます。

例:

myPseudoCache.Put("Users", myDictionaryWithGuidsAsKeys);

myPseudoCache.Put("Users_" + userId, singleUserEntity);

環境は、ASP.NET アプリケーションの HttpRuntime.Cache を使用した C# ですが、興味がある場合は、一般的な考え (保守性の側面、パフォーマンスなど) にも興味があります。

ここで合理的な決定を下そうとしていますが、具体的な利点と欠点についてはよくわかりません. もっと経験のある人が、何を考慮すべきかについてアドバイスをくれるでしょうか?どうもありがとう!

4

2 に答える 2

2

それは実際にはトレードオフです。myPseudoCache に「ユーザー」のみを含める場合は、2 番目の方法を使用できます。つまり、myPseudoCache.Put("Users_" + userId, singleUserEntity);

多くの異なるアイテム (グループ、ロールなど) があり、特に頻度が異なる場合、展開されたキャッシュ構造は最適なものではない可能性があります。この場合、ツリー状の構造または辞書内の辞書に従うことが理にかなっています。myPseudoCache.Put("Users", myDictionaryWithGuidsAsKeys);

例えば; ロールの数が少ない場合は、ユーザー数が非常に多いため、ロールの検索に影響を与える必要はありません。

于 2013-06-05T11:31:34.693 に答える
1

より良いオプションは、個別の値よりも辞書全体を保持することだと思います。まず第一に、ディクショナリのキー間を反復する方がはるかに簡単です。私の場合、容量に違いはありません。したがって、最大の利点は、このオプションの方が維持しやすく、特にキャッシュからデータを取得するときにコードがより明確になることです。

于 2013-06-05T11:49:14.803 に答える