0

私は、大きなデータセットへの高速読み取り専用アクセスを必要とするWeb APIを設計しています。このデータセットは、常に保存され、アクセスできる状態になっていることを願っています。アクセスは静的クラスから行われ、データに対していくつかの超高速ルックアップを実行します。

したがって、を事前にキャッシュしたいと思いDictionary<string,Dictionary<string,Dictionary<string,myclass>>>ます。第3レベルのディクショナリの要素の総数は約100万で、最終的には増加しますが、これまでに200万を超えないようにします。'myclass'は、文字列の(小さな)リスト、int、enum、および2つのboolを備えた小さなクラスであるため、大きなものはありません。メモリ内で100MBを少し超えるはずです。

私の知る限り、これを行う方法は、StaticClass.Load()メソッドを呼び出して、Global.asaxのApplication_Startイベントを含むファイルからこのすべてのデータを読み込むことです。

これで何を考えたり心配したりする必要があるのだろうか。Load()を呼び出して、将来のアクセスのためにすべてがOKであると仮定するのと同じくらい簡単ではないと思います。APIが数時間ヒットしなくても、GCはデータをそこに残すことを知っていますか?

厄介なことに、このデータも毎日リロードしたいと思います。古いデータセットを破棄して、別のファイルから新しいデータセットを読み込むことができると思いますが、後でそれについて説明します。

乾杯

4

3 に答える 3

0

ここでは、標準のASP.netアプリケーションキャッシュが機能する可能性があります。この記事をチェックしてください。これにより、依存関係(ファイルの変更)または時間ベースの有効期限の管理が組み込まれます。リンクされた記事はOn_startアプリケーションを示しています

私の懸念は、キャッシュしたいもののサイズです。

于 2011-08-08T05:54:12.083 に答える
0

乾杯みんな

オプションに対応するこの記事も見つかりました:http ://www.asp.net/data-access/tutorials/caching-data-at-application-startup-cs

大量のデータ、または「大量」と定義されているデータについて、実際に推奨するものはありません。調査を続けますが、Redisはかなり良さそうです

于 2011-08-10T04:04:54.587 に答える
0

私の同様の質問IIS6ASP.NET2.0アプリケーションキャッシュを参照してください-大量のデータのデータストレージオプションとパフォーマンスしかし、特に、あなたのケースに当てはまると思う大規模キャッシュのオプションに関するマークと彼の最後の段落からの回答。

于 2011-08-08T06:50:13.323 に答える