当前位置: 首页 > 知识库问答 >
问题:

与自填充缓存范围的Spring ehache集成

罗翰
2023-03-14

我必须集成Spring和ehache,并试图用阻塞缓存模式来实现它

<ehcache:annotation-driven/>

对于共享(默认)和方法,有一个自填充-缓存-范围的选项。你能解释一下有什么区别吗?

还有注释@Cacheable和selfPopulating标志

根据我在一些帖子上读到的

http://groups.google.com/group/ehcache-spring-annotations/browse_thread/thread/7dbc71ce34f6ee19/b057610167dfb815?lnk=raot

它说当使用共享时,只创建一个实例,并且每次使用相同的缓存名称时都使用相同的实例,所以如果我使用自填充标志作为一个方法的true,

所有试图访问带有@Cacheable注释且selfPopulating标志设置为true的其他方法的线程都将被挂起,这是我不希望看到的

<ehcache:annotation-driven/>

另一方面,当self-populating cache scope=method为所有带@Cacheable注释的方法创建单独的实例时,selfPopulating标志设置为true,这样就不会产生问题。

但是在这种情况下,当我尝试使用@TriggerRemove删除一个元素并给出@Cacheable中使用的缓存名称时,它会在每个单独的实例中搜索以找到值吗?这不是开销吗?

共有1个答案

方斌
2023-03-14

由Eric在上面的ehache google组上回答

在所有情况下,都有一个底层Ehcache实例。当设置selfPopulating=true时,将创建一个SelfPopulatingCache包装器。

如果cache-ope=共享,那么使用该命名缓存的所有注释将使用相同的SelfPopulatingCache包装器如果cache-ope=方法,那么每个方法创建一个包装器

请注意,在这两种情况下,SelfPopulatingCache都是一个包装器,仍然只有一个实际的缓存支持包装器

至于阻塞,如果您阅读了SelfPopulatingCache和BlockingCache的文档,您会注意到ehache通过键条带在缓存级别锁定和每个键锁定之间进行了折衷。http://ehcache.org/apidocs/net/sf/ehcache/constructs/blocking/BlockingCache.html

 类似资料:
  • 我计划在我的应用程序组件中使用SelfPopulatingCache,因为它支持通读和看似用于刷新的支持缓存。 然而,我对timeToLiveSeconds配置有点困惑。这是我的测试配置: 在我的单元测试中,我执行以下操作: < li >验证我的缓存中有2个条目 < li >睡眠3秒钟 < li >但是,Hibernate后,我的缓存中仍有2个条目。 根据其他在线帖子(而不是文档),当我下次执行读

  • 问题内容: 就像是有什么,但对?我要显示的数据是使用的关联。 我已经尝试使用过,但是在这种情况下,我必须在hibernate状态下使用它,这需要我指定using,并且每当我检索到through时,列表中的元素之间都会有空格,具体取决于。 我需要自动填充集合,因为我需要在创建时动态生成。当我使用plain时,得到以下内容: 还有其他解决方案吗? 编辑 我正在尝试实现动态表格 问题答案: 您无法在MV

  • 问题内容: 是否有任何语法/软件包允许使用数字范围快速填充Java数组,例如在perl中? 例如 另外,这里提供了一个包,该包允许在上述数字列表中获取第n个数字,而无需实际创建数组(这可能很大)? 例如 实施起来并不太困难,但是我想这可能很普遍,所以也许已经完成了。 问题答案: 不像True Soft的答案那么干净,但是您可以使用Google Guava达到相同的效果: 请注意,您需要一些静态导入

  • 问题内容: 我想要一个包含1到500范围内的整数的列表。是否有某种方法可以使用Guava(或只是纯Java)创建此列表,而不必遍历该范围并将值分别添加到我自己的列表中码? 问题答案: 使用番石榴,您可以诉诸于:http : //docs.guava- libraries.googlecode.com/git/javadoc/com/google/common/collect/Range.html

  • 我有2个xml配置文件,如下所示 app-context.xml: test-cache.xml

  • 问题内容: 我有一个包含2列的表格,日期和分数。它最多有30个条目,最近30天内每个条目一个。 我的问题是缺少某些日期-我想看看: 我从单个查询中需要得到的是:19,21,9,14,0,0,10,0,0,14 …这意味着缺失的日期填充有0。 我知道如何获取所有值,以及如何使用服务器端语言遍历日期和缺少空格。但这是否可以在mysql中完成,所以我可以按日期对结果进行排序并得到缺失的片段。 编辑:在此