問題タブ [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# - MemoryCacheをクリアする方法は?
MemoryCacheクラスを使用してキャッシュを作成しました。いくつかのアイテムを追加しますが、キャッシュをリロードする必要がある場合は、最初にキャッシュをクリアしたいと思います。これを行う最も簡単な方法は何ですか?すべてのアイテムをループして一度に1つずつ削除する必要がありますか、それともより良い方法がありますか?
c# - System.Runtime.Caching.ObjectCache内のキャッシュポリシーを検査する方法は?
新しい.NET4.0キャッシング名前空間を利用しています:System.Runtime.Caching
。
現在、実際のアプリに最適なものを見つけるために、新しいAPIを試作品/いじっています。
これに沿って、基本的にキャッシュ内のすべて、特に次の情報をダンプするページ(ASP.NET MVC)を作成しようとしています。
- キャッシュキー
- キャッシュオブジェクト
- キャッシュポリシー(有効期限など)
- キャッシュの依存関係(ある場合)
ただし、キー/オブジェクト以外は取得できないようです。
これが私が現在遊んでいるコードです:
「CacheItem」クラスが必要な情報(有効期限、依存関係など-少なくとも「ゲッター」として)を公開することを望んでいました。
しかし、そうではありません。キー、値、リージョン名のプロパティだけがあります。
キャッシュ内のアイテムを調べて、必要な情報を吐き出すにはどうすればよいですか?
欠落している名前空間/クラスはありますか?
編集
ChangeMonitorクラスがあるように見えますが、これも有効期限情報を提供せず、キャッシュアイテムが削除されたときにイベントをサブスクライブできるようにするだけです。
キャッシュ内のアイテムを取得する方法と、それらが期限切れになったときに取得する方法が必要です。
編集2
これが別の質問であるかどうかはわかりませんが、ObjectCacheにどのような存続期間を与えるべきかについても混乱しています。MSDNによると、これはシングルトンではなく、実際には複数のObjectCacheインスタンスを作成できます。それはどういう意味ですか、ObjectCacheインスタンスにアクセスするときに完全にロックされたシングルトンを使用する必要がありますか?
.net - OfType を使用すると System.Runtime.Caching が間違ったカウントを返す
Customer タイプの 3 つのオブジェクトを MemoryCache に追加し、MemoryCache をフィルタリングして、Customer タイプのオブジェクトのみを取得しようとしています。
上記のコードを実行した後、「顧客タイプのキャッシュされたオブジェクトの合計」が 3 になると予想していましたが、0 が返されます。
ここで何が間違っているのか誰でも指摘できますか?
c# - LINQ を使用した MemoryCache.Default の削除
次のような LINQ クエリを使用して、MemoryCache.Default からオブジェクトを削除する方法はありますか。
これは、オブジェクトを MemoryCache.Default インスタンスから削除しません。
ruby-on-rails - Rails 3で仮想属性を使用するか、ハッシュでデータを渡す場合
私のアプリケーションでは、Widget
モデルがあります。これは、テーブルによる関連付けを通じてhas_manyをFeature
持つモデルです。 WidgetFeature
要件に従って、WidgetFeatureオブジェクトを送信するときに、関連付けられている特定の機能について、そのオブジェクトにもfeature_nameを追加する必要があります。
それを行うには2つの方法があります。
- オブジェクトを送信するときに、次のようにします。
widget_feature_object[:feature_name]
次に、オブジェクトに(キー、値)ペアがあるため 、コントローラーまたはビューでアクセスできるので、別のペアを追加することもできます。
2。モデルfeature_name
で仮想属性をWidgetFeature
作成し、そのためのゲッターメソッドとセッターメソッドを作成します。
私の知る限り、モデルに実際に存在するフィールドとは異なる別のビューを作成する場合は、仮想属性を使用する必要があります(たとえば、フルネーム=名+姓)。
同じことがここにも当てはまりますか?
また、Railsはオブジェクトに対してキャッシュを実行しますか?これは、最初のアプローチを使用するときではなく、仮想属性を使用するときに役立つ可能性がありますか?
各アプローチの長所と短所は何ですか?また、私の要件に従ってどれが最も適していますか?どうもありがとう。
c# - MemoryCache.Set()はスレッドセーフですか?
残念ながら、MemoryCache.SetのMSDNドキュメントには、スレッドセーフかどうかが明示されていません。
明示的なロックなしで複数のスレッドから使用.Get()
しても安全ですか?.Set()
c# - MemoryCacheは構成のメモリ制限に準拠していません
アプリケーションで.NET4.0MemoryCacheクラスを使用していて、最大キャッシュサイズを制限しようとしていますが、テストでは、キャッシュが実際に制限に準拠しているようには見えません。
MSDNによると、キャッシュサイズを制限することになっている設定を使用しています。
- CacheMemoryLimitMegabytes:オブジェクトのインスタンスが拡張できる最大メモリサイズ(メガバイト単位)。」
- PhysicalMemoryLimitPercentage: "キャッシュが使用できる物理メモリの割合。1から100までの整数値で表されます。デフォルトはゼロです。これは、 MemoryCacheインスタンスが、にインストールされているメモリの量に基づいて独自のメモリ1を管理することを示します。コンピューター。" 1.これは完全に正しいわけではありません。4未満の値は無視され、4に置き換えられます。
キャッシュをパージするスレッドはx秒ごとに起動され、ポーリング間隔やその他の文書化されていない変数にも依存するため、これらの値は概算であり、ハード制限ではないことを理解しています。ただし、これらの差異を考慮しても、CacheMemoryLimitMegabytes とPhysicalMemoryLimitPercentageを一緒に設定した後、またはテストアプリで単独で設定した後、最初のアイテムがキャッシュから削除されると、キャッシュサイズに非常に一貫性がなくなります。確かに、各テストを10回実行し、平均値を計算しました。
これらは、3GBのRAMを搭載した32ビットのWindows7PCで以下のサンプルコードをテストした結果です。キャッシュのサイズは、各テストでCacheItemRemoved()を最初に呼び出した後に取得されます。(キャッシュの実際のサイズはこれより大きくなることを認識しています)
テストアプリケーションは次のとおりです。
MemoryCacheが構成されたメモリ制限に従わないのはなぜですか?
asp.net - MemoryCache Empty : 設定後に null を返します
新しい .NET 4 System.Runtime.Caching MemoryCache を使用している MVC 3 アプリケーションに問題があります。一見予測できない時間が経過した後、キャッシュが停止し、空のように動作することに気付きました。ASP.NET MVC のテスト ビューから直接取得した次のコードについて考えてみましょう。
それが機能している場合、予想通り「fred」が出力されます。ただし、問題が発生し始めるとSet()
、 の値MemoryCache.Default["myname"]
は null になります。Response.Write()
行にブレークポイントを設定し、イミディエイト ウィンドウを使用してキャッシュを直接設定して読み取ることで、これを証明できます。設定されず、null のままです。それを再び機能させる唯一の方法は、AppDomain のリサイクルを引き起こすことです。
興味深いことに、アプリが正常に動作しているときに、Response.Write()
回線を中断して実行すると、問題が発生する可能性がありますMemoryCache.Default.Dispose()
。その後、MemoryCache.Default 自体は null ではありませんが (これはなぜでしょうか?)、設定されたものは保存されません。エラーは発生しませんが、何も保存されません。
誰でもこれを確認して説明できますか? 私が発見したと信じているように、アプリが単独で動作しなくなると、何かが DisposingMemoryCache.Default
になりますが、それは私ではありません!
アップデート
さて、私は今、この問題にうんざりしています! CLRProfiler は MVC 3 では動作しないようです。SciTech の CLR ツールは優れていましたが、RedGate ANTS も同様でした。しかし、彼らが私に言ったのは、MemoryCache オブジェクトが何かによって破棄されているということだけでした。また、(OutputCacheAttribute で指定された) キャッシュする必要がある私のページの PartialView が数分後にキャッシュを停止することを (タイムスタンプの印刷を介して) 証明しました。ページへの呼び出しごとに更新が開始されます。環境を明確にするために、Win 7 Ultimate を実行している開発ワークステーションの IIS 7.5 サーバーで直接実行しています。上記のメモリ ツールは、プレイ中のオブジェクトに関して、約 9 MB のメモリしか使用していないことを示唆しています。
必死になって、キャッシングコードを変更して、最初にアンビエント HttpContext を検索してフックし、そのキャッシング機能が利用可能な場合はそれを使用しました。初期のテストはこれが信頼できることを示していますが、厄介なハックのように感じます.
MemoryCache と OutputCache は MVC 3 での動作が保証されていないと感じています...
c# - .NET 4 より前のメモリ キャッシュ
新しい MemoryCache クラスを使用したいのですが、まだ .NET 4 を使用していません。単純なキャッシュ クラスがあります (内部的に辞書を使用します)。このクラスを MemoryCache のように使用するには、どのようなアプローチがよいでしょうか? アプリケーションの存続期間中 (asp.net 以外) に MemoryCache がどのように管理されるかを知っている人はいますか?
linux - 「メモリキャッシュ」と「メモリプール」の違い
「Linux ネットワークの内部構造を理解する」と「Linux カーネルを理解する」という 2 冊の本やその他の参考文献を読むことで、私はかなり混乱しており、「メモリ キャッシュ」と「メモリ プール」の手法について明確にする必要があります。
1) それらは同じ技術ですか、それとも異なる技術ですか?
2) 同じでない場合、違いを生むもの、または明確な目標は何ですか?
3) また、スラブ アロケータはどのように導入されますか?