私は次キャッシュの問題を抱えていますキー全体の代わりにキー複数CachePut操作
この結果の利点は明らかです。つまり、次の起動時にfetchRecords(overlappingRecordKeys)
を実行すると、長時間実行されるバッチクエリには以前に含まれていなかったキーのみが含まれます。これは、List
全体の平等性をテストすることで得られないメリットです。
これは、そのメカニズムとしてkeyGenerator
インターセプター経由では解決できないだけで私たちは、この問題を解決するための最善のアプローチは何の方法
の呼び出しごとに単一のキャッシュキーを返すことができるように?私は1
は(AOPなしで、上記のようにCachingAspect
// pseudo code
@Aspect
class CachingAspect {
CacheManager mgr = ...
@Around("somePointcut")
void checkCache(ProceedingPointCut pc) {
// grab args from 'pc' which is of type List<String>
// check against 'mgr', modify the argument to exclude those records already in cache
// capture the output (i.e. new records from long-running operation), append with records retrieved from cache, return the union
}
}
ソリューション2
同じ考えを作成し、直接fetchRecords()
でコードを入れて2つのソリューション
策を考えることができます。これには利点があります追加された型の安全性を犠牲にして
どのソリューションが優れていますか?またはアプローチ?