问题标签 [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.

0 投票
5 回答
22512 浏览

spring - 如何更新/删除已缓存在项目集合中的项目

我正在使用 Spring 和 EhCache

我有以下方法

我还有其他使用@Cacheable、@CachePut 和@CacheEvict 的方法。

现在,假设数据库返回 100 个产品并通过 缓存它们key="#root.target.PRODUCTS",然后其他方法将插入 - 更新 - 删除一个项目到数据库中。因此,通过 缓存的产品key="#root.target.PRODUCTS"不再相同,例如数据库。

我的意思是,检查以下两种方法,它们能够更新/删除一个项目,并且同一个项目缓存在另一个中key="#root.target.PRODUCTS"

我想知道是否可以通过 更新/删除位于缓存中的项目key="#root.target.PRODUCTS",如果产品被删除,它将是 100 更新产品或 499。

我的观点是,我想避免以下情况:

我不想再次调用 500 或 499 产品缓存到key="#root.target.PRODUCTS"

有可能这样做吗?如何?

提前致谢。

0 投票
0 回答
1075 浏览

spring - 将两个缓存逐出放在同一方法上

我在两种方法上有两个缓存。brandbrands

现在我想从被调用brands时驱逐一切。createOrUpdateBrand

我可以做类似以下的事情吗???

或者

0 投票
2 回答
33326 浏览

java - Spring Cache:驱逐多个缓存

我正在使用 Spring Cache 抽象,并且定义了多个缓存。有时,当数据发生变化时,我想驱逐多个缓存。@CacheEvict是否可以使用 Spring 的注释来驱逐多个缓存?

0 投票
1 回答
861 浏览

caching - Ehcache:从存储为列表的缓存中删除条目

我正在使用使用 ehcache 作为实现的 Spring 3.2 缓存抽象。

我能够缓存返回对象列表的方法的输出,如下所示。

但是我无法List<Employee>使用下面给出的代码通过@CacheEvict 在更新或删除时从缓存中存储的对象中删除特定条目

0 投票
0 回答
469 浏览

java - 什么是默认缓存键?

我们在生产环境中使用以下代码已经有一段时间了:

如您所见,这是使用相同缓存的两种不同的零参数方法。现在,在阅读了一些关于Spring 缓存的文档之后,似乎在将元素放入缓存时没有考虑方法的名称。

我们现在不清楚的是,尽管根据文档它不应该工作,但它确实有效。似乎不是只有参数用于缓存的键。如果这是真的,还有什么要考虑的。如果不是,它为什么对我们有用并且不会抛出(ClassCast)异常?

0 投票
3 回答
10707 浏览

java - Spring @Cacheable 如何配置一个复杂的key

我有一个返回列表的方法,我想根据传递的参数缓存它。参数是 4 和整数如何使用 SpEL 配置它?我正在使用春季版本 4.0.6.RELEASE。

0 投票
1 回答
376 浏览

hibernate - Hibernate 查询缓存和二级缓存

我有一个这样的查询缓存。

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');我可以看到 db 查询被触发,而不是从缓存中获取 id 123 的 Review。

注意:reviewRepository 是一个标准的 querydsl 存储库。实现CRUDRepository<Review,String>Review 域模型有 Cacheable、Cache annotations 集。

我在这里先向您的帮助表示感谢。

0 投票
1 回答
811 浏览

java - 修改对象会改变 Ehcache 值

如果我将密码设置为空,例如如下所示。我看到的缓存值也被相应地修改,因为在下一次调用中缓存被命中并且那里的密码设置为 NULL。这是正确的行为吗?如果我想修改该对象,是否必须在每次检索后创建一个新对象。我说的是修改不是在数据库中而是在服务级别上进行修改。

0 投票
0 回答
1052 浏览

java - 无法将 Spring Cache 建议添加到方法 - internalCacheAdvisor 与可缓存注释 bean 在同一批次中创建

我们重构了应用程序的某些部分,之后,虽然没有触及包含缓存方法的类,但使用 spring cachable 注释的方法停止被缓存。

经过一些调试,我们可以看到在重构并添加了一些新的 Spring bean 之后,具有 cachable 方法的 bean 现在与 internalCacheAdvisor 本身在同一批次中创建。因此无法应用 Advice,并且永远不会调用 Spring 缓存方面。所以方法结果没有被缓存,@Cachable注解不起作用。

什么机制决定可以同时创建哪些 bean,我如何调试和影响这个机制?

我查看了 Spring 方法 BeanFactoryAdvisorRetrievalHelper::findAdvisorBeans,在运行旧代码和工作代码时,它看起来像这样: 成功创建的可缓存 bean

重构之后是这样的: 在此处输入图像描述

我们的注解类 couchbaseTranslationProvider 与 internalCacheAdvisor 是在同一批次创建的,这是不可能的。尝试应用建议代理时,我收到一条调试消息“正在跳过当前创建的顾问...”。(我认为这应该是一条错误消息!)

我们启用缓存的 POM 文件如下所示:

0 投票
1 回答
291 浏览

spring-data-jpa - 使用 CouchbaseCacheManager 并设置 TTL

有没有办法为 CouchBaseCacheManager 中的不同 CouchbaseCache 对象指定不同的 TTL?

我如何使该列表在一段时间后在缓存中过期...