問題タブ [ehcache]
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.
java - Ehcacheで期限切れのオブジェクトを取得する
Ehcacheの上に次のアルゴリズムを実装したいと思います:
- キャッシュから要素を取得してみてください
- 要素の有効期限が切れていない場合
- 価値を提供する
- そうしないと
- 期限切れの値を提供します
- バックグラウンドで要素を更新します
しかし、期限切れの要素(Element.isExpired())を取得することはありません。キャッシュ構成(特にTimeToLiveとTimeToIdle)を試してみましたが、期待どおりに機能しないようです。キャッシュ内のキーを一覧表示できますが、期限切れの要素を「get()」すると、常にnullが返されます。
私は何を間違っているのですか?
java - 「キャッシュされたアイテムがロックされました」により、HibernateでSelectステートメントが発生します
キャッシングをHibernateで希望どおりに機能させるのに問題があります。私が抱えているこの問題を再現するために、いくつかのサンプルコードを作成しました。
それ自体のインスタンスを含むオブジェクトが1つあります。たとえば、より多くのパーツで構成されているパーツ。
更新されたオブジェクトが入ってくるときにHibernateが使用するselectステートメントを本当に最小化する必要があります。ログを調べた後、SELECTステートメントを引き起こしている次のログ出力が表示されます。
キャッシュされたアイテムがロックされました:com.cache.dataobject.Part.parts#1
キャッシュされたアイテムがロックされないように、アノテーションマッピング、xmlファイル、キャッシュプロバイダー、またはロジックで何を変更できますか?私は本当にそのselectステートメントを取り除きたいです。
Entity、DataObject、テスト対象のコード、およびログ出力を含めました。
Hibernateバージョン: 3.4
EHCacheバージョン: 1.2.3(Hibernateダウンロードに含まれています)
パーツDataObject:
CacheDao:
クライアントコードのテスト:
Persistence.xml
EhCache.xml
出力ログ:
java - JMS情報を追加するとEhCacheが壊れます
JMSトピックを介してEhCacheを配布したいと思います。これは、EhCacheのサイトでここに文書化されています
私が使用しているもの:
- ehcache-1.6.0-beta3
- ehcache-jmsreplication-0.3
- 春-2.5
- スプリングモジュール-0.9
私のSpring構成は次のようになります。
そして、JMS以前の設定では、私のehcache.xmlは次のようになります。
そして、これはうまくいきます。そこで、トピック情報を追加します。
また、アプリケーションコンテキストを取得すると、NullPointerが取得されます。スタックトレースは次のとおりです。
誰かからのアイデアはありますか?
java - インスタンス数だけでなく、メモリ内キャッシュのメモリ使用量を制限できる Java キャッシュはありますか?
クエリ データを短期的にキャッシュするための単純なインメモリ (およびインプロセス) キャッシュを探しています (ただし、要求/応答を超えた短期的な意味、つまりセッション境界)。EhCache はおそらく機能しますが、必要なものが 1 つ提供されていないように見えます: キャッシュされるオブジェクトの数を制限するのではなく、キャッシュされたデータによって消費されるメモリの量を (概算で) 制限します。
シリアル化なしで特定のオブジェクトの正確なメモリ使用量を把握するのは難しいことを理解しています(一般的には、その遅さが私の用途の目的を損なうため、これは避けたいと思います)。サイズの見積もりを自分で提供する必要があります。
だから:キャッシュされたオブジェクトの「重み」を定義して、キャッシュされるものの量を制限できる単純なオープンソースのJavaキャッシュはありますか?
編集 (2010 年 11 月): 価値のあるものとして、この問題に対処しようとするJava CacheMateと呼ばれる新しいプロジェクトがあり、他のいくつかの改善のアイデア (マルチレベルのインメモリ インプロセス キャッシング) があります。
java - EHCache が機能していないようです
Spring と Hibernate を使用する Java アプリケーションに ehcache をセットアップしました。ただし、Junit テストを実行して統計を出力すると、キャッシュに何もないように見えます。
すべてのキャッシュのキャッシュ マネージャー統計の出力:
COM.****.SERVICES.CLARITY.DOMAIN.ACTIONITEM.BYRESOURCEUNIQUENAME: getCacheHits: 0 getCacheMisses: 0 getObjectCount: 0
COM.****.SERVICES.CLARITY.DOMAIN.ACTIONITEM: getCacheHits: 0 getCacheMisses: 0 getObjectCount: 0
COM.****.SERVICES.CLARITY.DOMAIN.RESOURCE: getCacheHits: 0 getCacheMisses: 0 getObjectCount: 0
マッピング ファイルの内容 (パーツのみ、大きすぎてすべてを貼り付けられません):
[...]
EHCACHE.XML の内容:
ハイバネート設定:
キャッシュを作成する方法についてのアイデアはありますか? ありがとう。
java - ehcacheレプリケーションのセットアップ-どのマルチキャスト設定が必要ですか?
ここに記載されているようにehcacheレプリケーションを設定しようとしています:http://ehcache.sourceforge.net/EhcacheUserGuide.html#id.s22.2
これはWindowsマシン上にありますが、最終的には本番環境のSolarisで実行されます。
指示では、プロバイダーを次のように設定するように指示されています。
そして、このようなリスナー:
私の質問は次のとおり
です。マルチキャストIPアドレスとポートは任意ですか(アドレスは特定の範囲内にある必要がありますが、特定の番号である必要があります)?
システム管理者(私はオフィスネットワーク上にいます)が何らかの方法で設定する必要がありますか?
ローカルでテストしたいので、上記の構成で2つの別々のTomcatインスタンスを実行しています。それぞれで何を変更する必要がありますか?両方のリスナーが同じポートでリッスンできないことは知っていますが、プロバイダーについてはどうでしょうか。
また、リスナーポートも任意ですか?
上記のように設定しようとしましたが、テストではキャッシュが複製されていないようです。一方のTomcatのキャッシュに追加された値は、もう一方のキャッシュには存在しません。
この状況をデバッグするために(パケットスニッフィング以外に)できることはありますか?
助けてくれてありがとう、これで私の髪を引き裂いてきました!
java - Hibernateの第2レベルのキャッシングehcacheのパフォーマンス
ehcache(1.6.0-beta5)を使用して、変更されない多数のテーブルの第2レベルのキャッシュを有効にすることを検討しています。このテーブルに読み取り専用のehcacheリージョンを設定しましたが、現在は正常に機能しているようです。キャッシュに格納されているHibneratePOJOはすべて不変です。
ここで開発者の1人が、ehcacheからオブジェクトを「ハイドレイト」するのにかかる時間、つまりehcacheのエンティティの内部表現から実際のJavaオブジェクトへのマッピングにかかる時間が大幅に低下するという問題を提起しました。代わりに、彼はオブジェクトを手動で独自のキャッシュに保存することを提案しました。これにはコードの大幅な変更が必要であり、改善がどれほど大きくなるかについては留保しています。
私の質問は次のとおりです。
- このパフォーマンスの低下は本当に重要ですか?
- エンティティが読み取り専用キャッシュで不変である場合、ehcacheは実際に何らかのハイドレーションを行う必要がありますか?オブジェクトを直接保存するだけではいけませんか?
助けてくれてありがとう。