問題タブ [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.
c - 揮発性とキャッシュの動作
しかし、私は混乱しています。
質問:
OS が自分で処理するのか
、変数を _Uncached として宣言するなどのように、変数がキャッシュに入らないようにプログラマーがプログラムを作成する必要があるのかどうか。
よろしく
学習者
.net - .NET MemoryCache から多くのアイテムを期限切れにする方法
MemoryCache インスタンスから多数の項目を削除するための推奨される方法は何ですか?
この質問に関する議論に基づいて、アプリケーション全体に単一のキャッシュを使用し、キーに名前空間を使用して、複数の論理タイプのアイテムを同じインスタンスにキャッシュできるようにすることが推奨されるアプローチのようです。
ただし、単一のキャッシュ インスタンスを使用すると、キャッシュから多数のアイテムを期限切れにする (削除する) という問題が残ります。特に、特定の論理タイプのすべてのアイテムを期限切れにする必要がある場合。
現時点で私が見つけた唯一の解決策は、この質問への回答に基づいていましたが、キャッシュ内のすべてのキーを列挙し、名前空間をテストする必要があるため、パフォーマンスの観点からはあまり良くありません。時間がかかる!
現時点で思いついた唯一の回避策は、キャッシュ内のすべてのオブジェクトにバージョン番号を付けた薄いラッパーを作成し、オブジェクトがアクセスされるたびに、キャッシュされたバージョンが現在のバージョンと一致しない場合は破棄することです。したがって、特定のタイプのすべてのアイテムをクリアする必要があるときはいつでも、現在のバージョン番号を上げて、キャッシュされたすべてのアイテムを無効にします。
上記の回避策はかなりしっかりしているようです。しかし、同じことを達成するためのより簡単な方法がないのではないかと思わずにはいられません。
これは私の現在の実装です:
c# - ワーカー プロセス全体で MemoryCache をクリアする
IIS 7 で実行される ASP.NET MVC アプリケーションがあります。これは Web ガーデンとしてセットアップされており、ワーカー プロセスの数はプロセッサの数と一致しています。私は時々重い負荷を経験する傾向があり、この設定が最もうまく機能しました.
System.Web.Cache を使用してキャッシングを実装しました。キャッシュ内のアイテムの一部を無効にする必要がある場合がありますが、すべてのプロセスでキャッシュをクリアすることはできません。
.NET 4 の System.Runtime.Caching 機能を使用すると、これが簡単になりますか? 同様の質問がありますが、.NET 4.Flush HttpRuntime.Cache objects across all worker processes on IIS webserver に関するより良いアドバイスがあることを願ってい ます
c# - asp.net mvc ソリューションのキャッシュ ソリューションが必要
私のアプリは、それを実行中に多くのオブジェクトを生成します。オブジェクトはデータベース クエリの結果として生成され、ORM ソリューションの一部です。これらのオブジェクトを使用するプログラムは、通常、それらを 1 つずつ要求します。
System.Runtime.Caching を使用したいのですが、特定の基準があるため、方法がわかりません。
各ユーザーは異なるデータベースにログインできます。すべてのオブジェクトに適用できます。
データベースには、複数の異なる企業プロファイルを含めることができます。ほとんどのオブジェクトに適用できます。
ほとんどのオブジェクトは多言語対応です。
一部のオブジェクトは、データベース トランザクションが有効な間だけキャッシュされ、ロールバックまたはコミット時にダンプされます。
頭に浮かぶ最初の解決策は、キャッシュ用の複雑な文字列キー (つまり、データベース + 会社 + 言語 + オブジェクトの主キー値) を生成することですが、それが正しい方法かどうかはわかりません。また、トランザクション全体のキャッシュを実装する方法もわかりません。
独自の実装を使用すれば、おそらくキャッシュをより細かく制御できるでしょう。このようなもの:
c# - MemoryCache クラスによって消費されるメモリの量を確認する方法は?
当社の製品は、MemoryCacheオブジェクトに保持されるインメモリ オブジェクト データ セットに基づいています。
キャッシュに格納されたデータによって消費されるメモリの量を知りたいです。
製品の複数のインスタンスが同じマシン上で (それぞれ独自のアプリケーション ドメイン内で) 実行されている可能性があるため、誰が何を消費しているかをすぐに確認することが重要です...
このクラスには、CacheMemoryLimit や PhysicalMemoryLimit などのプロパティがありますが、メモリの消費量を知らせるプロパティはありません。
前もって感謝します!
c# - MemoryCache スレッド セーフ、ロックは必要ですか?
手始めに、以下のコードがスレッドセーフではないことを知っていることをそこに投げさせてください(修正:そうかもしれません)。私が苦労しているのは、実際にテストで失敗する可能性のある実装を見つけることです。現在、大規模な WCF プロジェクトをリファクタリングしています。このプロジェクトでは、(ほとんどの場合) 静的データをキャッシュし、SQL データベースからデータを取り込む必要があります。少なくとも 1 日に 1 回は有効期限が切れて「更新」される必要があるため、MemoryCache を使用しています。
以下のコードはスレッドセーフであってはならないことは知っていますが、負荷が高い場合に失敗することはありません。複雑なことに、Google検索では実装が両方の方法で表示されます(ロックの有無にかかわらず、それらが必要かどうかの議論と組み合わされています.
マルチスレッド環境での MemoryCache の知識を持っている人が、remove の呼び出し (めったに呼び出されることはありませんが、その要件です) が取得/再作成中にスローされないように、適切な場所でロックする必要があるかどうかを明確に知ることができますか?
c# - CacheItemPolicy - SlidingExpiration "アクセス" ルール?
「キャッシュ エントリがキャッシュから削除される前にキャッシュ エントリにアクセスする必要がある期間。デフォルトは NoSlidingExpiration で、期間に基づいてアイテムが期限切れになってはならないことを意味します。」
「アクセス」とは正確には何ですか?次のようにキャッシュされたアイテムにヒットした場合、それは意味しますか?
「アクセスされた」と見なされますか?
または、キャッシュされたアイテムを実際に変更した場合にのみアクセスされたと見なされますか?