問題タブ [spring-cache]
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.
spring - アイテムのコレクション内に既にキャッシュされているアイテムを更新/削除する方法
私はSpringとEhCacheを使用しています
私は次の方法を持っています
@Cacheable と @CachePut と @CacheEvict で動作する他のメソッドがあります。
ここで、データベースが 100 個の製品を返し、それらが を介してキャッシュされているとします。key="#root.target.PRODUCTS"
その後、他の方法で項目をデータベースに挿入、更新、削除します。したがって、 を通じてキャッシュされた製品key="#root.target.PRODUCTS"
は、データベースなどとは異なります。
つまり、次の2つの方法を確認してください。それらはアイテムを更新/削除でき、同じアイテムが他のアイテムにキャッシュされますkey="#root.target.PRODUCTS"
を介してキャッシュ内のアイテムを更新/削除できるかどうかを知りたいのですがkey="#root.target.PRODUCTS"
、製品が更新された場合は 100、製品が削除された場合は 499 になります。
私のポイントは、次のことを避けたいということです。
500 または 499 の製品を再度呼び出してキャッシュに入れたくありません。key="#root.target.PRODUCTS"
これを行うことは可能ですか?どのように?
前もって感謝します。
java - Spring Cache: 複数のキャッシュを削除する
Spring Cache 抽象化を使用しており、複数のキャッシュが定義されています。データが変更されたときに、複数のキャッシュを削除したい場合があります。@CacheEvict
Spring のアノテーションを使用して複数のキャッシュを削除する方法はありますか?
java - デフォルトのキャッシュキーは何ですか?
かなり長い間、本番環境で次のコードを使用してきました。
ご覧のとおり、これらは同じキャッシュを使用する 2 つの異なるゼロ引数メソッドです。ここで、 Spring キャッシュに関するいくつかのドキュメントを読んだ後、要素をキャッシュに入れるときにメソッドの名前が考慮されていないように見えます。
今のところ不明なのは、ドキュメントによれば動作しないはずですが、動作するということです。パラメータのみがキャッシュのキーに使用されているようには見えません。それが本当なら、他に何が考慮されますか。そうでない場合、なぜそれが機能し、noet が (ClassCast)Exceptions をスローしないのでしょうか?
java - Spring @Cacheable 複雑なキーを構成する方法
リストを返すメソッドがあり、渡されたパラメーターに基づいてキャッシュしたいと考えています。パラメーターは 4 と整数です。SpEL でこれを構成するにはどうすればよいですか? 春のバージョン 4.0.6.RELEASE を使用しています。
hibernate - Hibernate Query キャッシュと二次キャッシュ
このようなクエリキャッシュがあります。
JPAQuery dslQuery = new JPAQuery(entityManager);
QReview qReview = QReview.Review;
BooleanExpression where = QReview.review.id.in('123');
dslQuery.setHint("org.hibernate.cacheable", true);
List<Review> reviews = dslQuery.from(qReview ).where(where).distinct().list(qReview );
すべてのキャッシュ パラメータが正しく設定されているので、上記のリスト、つまり List<Review>
キャッシュされると思いますか?
しかし、その後、reviewRepository.findOne('123');
id 123 がキャッシュから取得された Review の代わりに、db クエリが起動されるのを見ることができます。
注: reviewRepository は標準の querydsl リポジトリです。これは、レビュー ドメイン モデルを実装しCRUDRepository<Review,String>
、キャッシュ可能でキャッシュ アノテーションが設定されています。
事前に助けてくれてありがとう。
java - オブジェクトを変更すると、Ehcache 値が変更されます
たとえば、以下のようにパスワードを null に設定した場合。次の呼び出しでキャッシュがヒットし、そこにあるパスワードが NULL に設定されているため、キャッシュ値もそれに応じて変更されます。これは正しい動作ですか?オブジェクトを変更したい場合、取得するたびに新しいオブジェクトを作成する必要がありますか?データベースではなくサービスレベルで変更することについて話しているのです。
java - Spring Cache アドバイスをメソッドに追加できません - internalCacheAdvisor はキャッシュ可能な注釈付き Bean と同じバッチで作成されます
アプリケーションの一部をリファクタリングした後、キャッシュされたメソッドを含むクラスは変更されていませんが、Spring cacheable でアノテーションが付けられたメソッドはキャッシュされなくなりました。
いくつかのデバッグの後、リファクタリングしていくつかの新しい Spring Bean を追加した後、cachable メソッドを持つ Bean が internalCacheAdvisor 自体と同じバッチで作成されていることがわかります。したがって、アドバイスを適用することはできず、Spring キャッシュ アスペクトは呼び出されません。そのため、メソッドの結果はキャッシュされず、 @Cachable アノテーションは機能しません。
同時に作成できる Bean を決定するメカニズムは何ですか? また、このメカニズムをデバッグして影響を与えるにはどうすればよいですか?
Spring メソッド BeanFactoryAdvisorRetrievalHelper::findAdvisorBeans を調べたところ、古くて機能しているコードを実行すると、次のようになります。
リファクタリング後は次のようになります。
私たちの注釈付きクラスcouchbaseTranslationProviderは、internalCacheAdvisorと同じバッチで作成されますが、これは不可能です。アドバイス プロキシを適用しようとすると、「現在作成されているアドバイザーをスキップしています ...」というデバッグ メッセージが表示されます。(これはエラーメッセージであるべきだったと思います!)
キャッシュを有効にする POM ファイルは次のようになります。
spring-data-jpa - CouchbaseCacheManager の使用と TTL の設定
CouchBaseCacheManager で異なる CouchbaseCache オブジェクトに異なる TTL を指定する方法はありますか?
そのリストを一定期間後にキャッシュで期限切れにする方法...