問題タブ [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.
web-services - RabbitMQ を使用して無効化されたメモリ内ローカル キャッシュの落とし穴
私はJava Webサーバーを持っており、現在Guavaライブラリを使用してメモリ内キャッシュを処理しています。これは頻繁に使用しています。フェイルオーバーと負荷分散のために、複数のサーバー (2 台以上) に拡張する必要があります。その過程で、代わりにインプロセス キャッシュから Memcache (外部サービス) に切り替えました。ただし、結果にはあまり感銘を受けません。ほぼすべての呼び出しで、別のサーバーへの外部呼び出しを行う必要があり、メモリ内キャッシュよりも大幅に低速です。
Memcache からデータを取得する代わりに、各サーバーでローカル キャッシュを使用し続け、RabbitMQ を使用して、キャッシュを更新する必要があるときに他のサーバーに通知することを考えています。そのため、1 つのサーバーが基になるデータに変更を加えると、他のすべてのサーバーにも、キャッシュが無効であることを伝えるメッセージがブロードキャストされます。すべてのサーバーは、キャッシュ無効化メッセージのブロードキャストとリッスンの両方を行っています。
このアプローチの潜在的な落とし穴を知っている人はいますか? プロダクションでこれを行っている人が他に見つからないので、少し緊張しています。私が見る唯一の問題は、各サーバーがより多くのメモリ (メモリ内キャッシュ) を必要とすることと、特定のサーバーが更新されたデータを取得するのに少し時間がかかることです。他に何か?
.net - System.Runtime.Caching の MemoryCache: アイテムの有効期限が切れない
現在、アイテムを MemoryCache.Default インスタンスに挿入しようとしていますが、これは機能します。でもアイテムは無期限!ポーリング間隔はデフォルト設定の 2 分で、MemoryCache に対して特定の設定は行われていません。
アイテムの追加ルーチンは次のようになります。
ただし、アイテムがキャッシュ内で期限切れになることはありません。10 分以上待ちましたが、まだキャッシュに残っています。主な目的は、クエリを数秒ごとに処理しようとすることで、データベースがクエリであふれないようにすることです。それらは数秒ごとにチェックされますが、SlidingExpiration はありません。最大遅延はまだ許容できるため、約 3 分後、5 分後に再度チェックする必要があります。
XMLなどで、コード外で構成を行いたくありません。それが不可能な場合、MemoryCache に代わる良い方法はありますか? おそらく、数値/オブジェクトキーと、パラメーターとプロパティによる構成でしょうか?
c# - .Net MemoryCache が機能しない! キャッシュが無効になり、呼び出しごとに再設定される
この動作がアプリケーション (コンソール アプリケーション) の性質によるものかどうかはわかりません。私の最終目標はSystem.Runtime.Caching.MemoryCache
、ASP.Net MVC アプリケーションで使用されるクラス ライブラリのクラスを使用することです。目標は、ネットワーク フォルダーで XML ファイル (データ ソース) が変更されるたびに設定される MemoryCache からデータを返すことです。
そのため、実装を行うために、List<>
キャッシュされるオブジェクトの単純なコンソール アプリを作成しました。これがコードです。
次に、プロジェクトをビルドし、2 つの個別のコマンド ウィンドウを開き、1 つずつ実行しました。DebugView、コンソール出力で私が期待するのは、キャッシュが読み込まれるのは 1 回だけで、2 回目の .exe 呼び出しでキャッシュ内のデータが検索され、そこから返されることです。 . しかし、それは起こっていることではありません。以下のコンソールと debugview のスクリーンショットを参照してください。
そしてDebugViewで...
私は何を間違っていますか?この動作は、コンソール アプリを使用しているためですか? クラス ライブラリのメソッド呼び出し全体でキャッシュを機能させるにはどうすればよいですか? また、同じライブラリが Web アプリ (IIS 7.5 の ASP.Net MVC ) で使用されている場合、どのような考慮事項に注意する必要がありますか。
ありがとうございました!
c# - .net MemoryCache - アイテムが削除されたことを通知
.NET 4.0 と C# で .net メモリ キャッシュを使用しています。項目が削除されたときにアプリケーションに通知するようにしたい (そのため、項目が削除されたことをログ ファイルに書き込んだり、UI に通知したりできます)。削除されます)。
とにかくこれを行うことはありますか。
System.Web.Caching ではなく System.Runtime.Caching.MemoryCache を使用しています