問題タブ [memorycache]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - MemoryCache ファイルへの保存
MVC Web アプリで値をキャッシュするために MemoryCache を使用しています。MemoryCache コレクション値をファイルに保存し、後でロードすることは可能ですか?
.net - .net 4 MemoryCacheリーク?
SQL依存関係でMemoryCacheを使用しています。MemoryCache.Set()を使用する場合、コレクション内のアイテムがオーバーライドされると、メモリリークが発生することに気付きました。次のシナリオを検討してください。
- key = Aのアイテムは、Table1に依存してキャッシュに挿入されます
- 同じkey=aの新しいアイテムは、Table2に依存して、.Set()を使用して再挿入されます。
- Table2がデータベースで変更されました。
-> Item key = aは実際にキャッシュから削除されましたが、そのメモリは引き続きMemoryCache内で要求されます。テーブル1のデータがデータベースで変更された場合にのみ、メモリが解放されます。
コードを再現する:
コードを使用するには、Button2を押して初期化し、データベース内のTable2のデータを変更します。Button3を使用して、使用可能なメモリを確認します。
.net - MemoryCacheにアトミック操作を追加できますか?
他のスレッドがアイテムに到達しようとする前に、アイテムを削除して新しいアイテムを追加するメソッドをMemoryCacheに実装できるかどうか知りたいのですが。ロックを制御できるものが見つからないようです(おそらく正当な理由で)ので、これら2つの操作を同時に実行できます。
c# - 最初の有効期限が切れた後、MemoryCache は常に「null」を返します
次の問題があります。この種のキャッシュ管理があります。
は非常に簡単です。
編集I(質問のテキストのバグ修正)
問題: いずれかのキーのキャッシュが期限切れになると、キャッシュ内のオブジェクトを取得するための次のすべての呼び出しが「null」を返します。私はキーをチェックし、常に正しいです。
この問題は PC のクライアントのサーバーでのみ発生し、サーバーは完全に動作します。
ありがとう。
エディットⅡ(上級編)
お客様のサーバーでアプリケーション プールを再起動すると、問題は数時間解決されます。
私たちのサイトには、次の設定を持つ特定のアプリケーション プールがあります。
パイプライン マネージャー モード: 統合フレームワーク: v4.0 32 ビット アプリケーションを有効にする: True。
デフォルトなどのその他の設定。
サーバーには 2 つのサイトがあり、1 つは「32 ビット アプリケーションを有効にする」が有効になっています。両方が無効になっている場合、エラーが発生しますが、これが問題かどうかはわかりません。
エディットⅢ(上級編)
問題の解決に失敗したため、Httpcontext.Current.Cacheに切り替えることにし、問題を解決することができました。別の解決策が必要で、引き続きMemoryCacheを使用しましたが、結果は得られませんでした。
java - EhCache ディスクストアのコンテンツをメモリにロードする
EhCacheのドキュメントで述べたように:
実際には、これは永続的なメモリ内キャッシュがディスク上のすべての要素で起動することを意味します。[...] そのため、Ehcache の設計では、起動時にすべてをメモリにロードするのではなく、必要に応じて遅延ロードします。
メモリ キャッシュがメモリ内のすべての要素を起動するようにしたいのですが、どうすれば実現できますか?
これは、当社の Web サイトがキャッシュへのアクセスを頻繁に実行するため、初めて Web サイトにアクセスしたときの応答時間が非常に遅くなるためです。
android - Android 1.6 以降の Android LruCache
Android 1.6以降でLruCache(Android 3.1のAPI)を使用する必要があります
LruCache をサポートする Android サポート ライブラリ v4 を使用しています (このマニュアルhttp://developer.android.com/training/displaying-bitmaps/cache-bitmap.html#memory-cacheによると) が、問題は、 NoClassDefNotFoundError は常に発生します。プロジェクトにsupport.v4ライブラリを含めます(他のアクティビティではViewPagerを使用しています...)
なぜこれが起こったのか誰にも分かりますか?
c# - MemoryCacheを使用してコストのかかるビルド操作に対処するにはどうすればよいですか?
ASP.NET MVCプロジェクトには、構築に大量のリソースと時間を必要とするデータのインスタンスがいくつかあります。それらをキャッシュしたいと思います。
MemoryCache
一定レベルのスレッドセーフを提供しますが、建築基準法の複数のインスタンスを並行して実行することを回避するには不十分です。次に例を示します。
忙しいウェブサイトでわかるように、データがビルドされるまで何百ものスレッドが同時にifステートメント内に入り、ビルド操作がさらに遅くなり、サーバーリソースを不必要に消費する可能性があります。
MemoryCacheにはアトミックAddOrGetExisting
な実装がありますが、「設定する値を取得するコード」ではなく「設定する値」が誤って必要になるため、特定のメソッドがほぼ完全に役に立たなくなると思います。
私たちはMemoryCacheの周りに独自のアドホックなスキャフォールディングを使用してそれを正しくしていますが、明示的なlock
sが必要です。エントリごとのロックオブジェクトを使用するのは面倒であり、通常、理想からはほど遠いロックオブジェクトを共有することで回避できます。そのため、そのような慣習を避ける理由は意図的なものである可能性があると思いました。
だから私は2つの質問があります:
lock
コードを作成しない方が良い方法ですか?(それは、1つに対してより応答性が高いことが証明された可能性があります、私は疑問に思います)このようなロックに対してMemoryCacheのエントリごとのロックを実現する正しい方法は何ですか?ロックオブジェクトとして文字列を使用するという強い衝動
key
は、「。NETlocking101」で却下されます。
c# - 毎秒 4k から 7k のルックアップまたは書き込みを処理できる効率的なメモリ内キャッシュが必要
マルチスレッド CPU で 80 バイトのデータを毎秒 5k から 10k レコードのレートで受信する効率的な C# アプリケーションがあります。
次に、重複レコードを検出してフィルター処理するためにメモリ内キャッシュを設定する必要があります。これにより、重複レコードがパイプラインをさらに進むのを抑制することができます。
キャッシュの仕様 (最大しきい値)
- 80バイトのデータ
- 10,000 レコード/秒
- 60 秒のキャッシュ = キー数 = 60,000
- (小計 48000000 バイト = 48Mb )
- 理想的なキャッシュ サイズ = 5 分 (または 240Mb)
- 許容可能なランタイム キャッシュ サイズの膨張 = 1 GB
質問
最も効率的なルックアップ、古いキャッシュ データのパージ、およびヒットしたデータの有効期限切れを防止できるメモリ内キャッシュ、ディクショナリ、ハッシュ テーブル、配列などを設定する最善の方法は何ですか。
ASP.Net Cache、System.Runtime.MemoryCacheを見ましたが、正しいスループットを達成するには、より軽量でカスタマイズされたものが必要だと思います。また、代わりにSystem.Collections.Concurrentと、これに関連するホワイトペーパーも検討しています。
最善のアプローチが何であるかについて誰か提案がありますか?
c# - .Net System.Runtime.Caching.MemoryCache-単一のコレクションまたは個々のカスタムオブジェクトを保存しますか?
Webサイトのすべてのユーザーが使用するグローバルデータをキャッシュするために、MemoryCache(.net 4.0)を使用してキャッシュを実装しています。
私の最初のアプローチ: 単一のオブジェクトを取得するためのキーを持つCustomerオブジェクトのコレクションを保持するKeyedCollectionを保存します。このコレクションには、最大250のそのようなオブジェクトを含めることができます。キャッシュの有効期限が切れるたびに、KeyedCollectionを再構築してキャッシュに追加します。
新しいアプローチ 今、私は、customeridをルックアップキーとして、各Customerオブジェクトをキャッシュに直接保存しないのはなぜかと考えています。したがって、MemoryCache.Defaultには、単一のKeyedCollectionに対して、最大250のそのようなCustomerオブジェクトが含まれます。利点:
- キー付きコレクションで別のルックアップを実行することなく、キャッシュから直接Customerオブジェクトを取得するため、より効率的です。
- 初めて要求された場合にのみ、新しいCustomerオブジェクトをキャッシュに追加します。キャッシュ全体を事前に構築するのではなく、一種の怠惰な追加です。
パフォーマンスやその他の要因の観点から、一方を他方に対して使用することについて何か考えはありますか?
.net - MonoTouch の System.Runtime.Caching.MemoryCache
System.Runtime.Caching.MemoryCacheはMonoTouch でアクセスできますか? そうでない場合、誰かが同等のものを知っていますか?
ありがとう!