jjzjj

java - hibernate 缓存 : Are objects returned by a cached query stored in L2 cache?

我们在项目中使用了hibernate4和ehcache。我们主要处理不可变对象(immutable对象),因此缓存是一个非常适合我们应用程序的功能。在尝试启用查询缓存时,我们遇到了以下问题:假设我们有以下实体:@Entity@Table(name="DOGS")@Immutable@Cache(usage=CacheConcurrencyStrategy.READ_ONLY)classDog{@Id@ColumnLongid;@ColumnStringname;}和查询:Criteriacriteria=session.createCriteria(Dog.class);criteri

java - 检索 Ehcache 中的过期对象

我想在Ehcache之上实现以下算法:尝试从缓存中获取一个元素如果元素没有过期服务值(value)其他提供过期值在后台刷新元素但我从来没有得到过期的元素(Element.isExpired())。我尝试使用我的缓存配置(尤其是TimeToLive和TimeToIdle),但我似乎无法让它按我想要的方式工作。我可以列出缓存中的键,但如果我“get()”一个过期的元素,我总是得到一个空值。我做错了什么? 最佳答案 你没有做错任何事。文档说获取过期元素会将其从缓存中移除并返回null。我怀疑只有当你有一个事件监听器监听元素过期事件时,元素

java - 是否可以在没有 Terracotta Enterprise Suite 的情况下使用 Ehcache 实现分布式缓存?

我试图找到如何为应用程序实现分布式缓存。Ehcache已经在我的项目中用于缓存,这就是为什么我搜索如何使用它来解决这个问题。但是,不幸的是,这似乎需要TerracottaEnterpriseSuite,而且它是商业的。不是吗?是否有另一种解决方案如何使用Ehcache进行分布式缓存(RMI或其他)? 最佳答案 您不需要terracotta企业套件来集群您的Ehcache实例。因此,您现在可以使用带有Ehcache和Terracotta的集群,以及纯OSS:http://www.ehcache.org/documentation/co

java - 将 EhCache 磁盘存储内容加载到内存中

如EhCachedocumentation中所述:Inpracticethismeansthatpersistentin-memorycachewillstartupwithallofitselementsondisk.[...]So,theEhcachedesigndoesnotloadthemallintomemoryonstartup,butlazilyloadsthemasrequired.我希望内存缓存启动时会将其所有元素存储在内存中,我该如何实现?这是因为我们的网站对缓存执行了很多访问,所以我们第一次访问该网站时响应时间很差。 最佳答案

java - 如何暂时禁用Spring缓存的缓存

我有一个用@Cacheable注释注释的springbean,定义如下@ServicepublicclassMyCacheableBeanImplimplementsMyCacheableBean{@Override@Cacheable(value="cachedData")publicListgetData(){...}}我需要此类能够禁用缓存并仅处理来自原始源的数据。这应该基于来自外部的某些事件而发生。这是我的方法:@ServicepublicclassMyCacheableBeanImplimplementsMyCacheableBean,ApplicationListener{

java - 具有大量实体的 Ehcache/Hibernate 和 RMI 复制

我目前正在研究如何在ehcache中使用RMI分发选项。我已经正确配置了ehcache.xml并且复制似乎工作正常。但是我有两个问题:->似乎ehcache/hibernate为每个实体创建了1个缓存。这很好,但是当复制到位时,它会创建1个线程/缓存来复制。这是预期的行为吗?由于我们的域很大,它创建了大约300个线程,这在我看来确实很大->另一个令人讨厌的后果是心跳消息似乎聚合了所有这些缓存名称。据我所见,该消息应适合1500字节,但事实并非如此,这导致我的日志中出现以下消息:Heartbeatisnotworking。为复制配置更少的缓存。大小为1747,但不应大于1500。关于如何

java - JPA后台缓存刷新

我们有一个高性能Java(J2SE)中间件应用程序,其中延迟是最重要的。它使用遗留数据库中保存的一些常设数据,遗留应用程序可能偶尔会修改这些数据。由于延迟要求,我们计划使用JPA和Hibernate以及缓存提供程序(例如Ehcache)来缓存常设数据。但是,当(通过旧版应用程序)更新常设数据时,我们需要尽快收到通知。我正在考虑在缓存上设置一个过期时间,但是在应用程序发出下一个数据请求之前,缓存不会被刷新——此时延迟将由于数据库重新读取而受到影响。理想情况下,我们需要缓存返回一个过时的值,并且在后台定期使用数据库中的最新值更新/刷新缓存。Ehcache可以吗?我已经看到了SelfPopu

java - 使用 Hibernate 的二级缓存时的默认缓存时间是多少

当使用Hibernate二级缓存和查询缓存并且没有在ehcache.xml中指定任何内容时,默认缓存时间是多少? 最佳答案 摘自CacheConfiguration上的文档:Thefollowingattributesandelementsareoptional.timeToIdleSeconds:Setsthetimetoidleforanelementbeforeitexpires.i.e.ThemaximumamountoftimebetweenaccessesbeforeanelementexpiresIsonlyusedi

java - 集中缓存服务器。 (Ehcache 或 Hazelcast)

目前我们有2个应用服务器,每个都有应用程序级缓存和中央数据库服务器。为了使两个服务器的应用程序缓存保持同步,我们在两者之间设置了JMS代理。在向JMS发送消息的一台服务器上清除缓存,因为其他服务器已注册,所以它将获取消息并根据消息内容清除特定条目。由于此消息传递系统在清除缓存条目时增加了延迟,因此在一段时间内,应用程序级缓存之间会出现不一致。因此我们想到了拥有集中缓存服务器来避免所有这些额外的工作来保持所有缓存同步。我们正在考虑使用Ehcache/Terracotta或Hazelcast,这些缓存包含结果集、锁定信息和一些系统特定的变量。请为我们建议最好的缓存解决方案。

java - EhCache 溢出到特定路径的磁盘

我在我的应用程序中使用带hibernate功能的ehcache。这里是ehcache.xml的配置我的diskStore路径是java.io.tmpdir,我想将其更改为我的应用程序路径${WebApp}/DiskStore 最佳答案 存储位置由硬编码路径指定。路径属性的合法值是合法的文件系统路径。例如,对于Unix:/home/application/cache以下系统属性也是合法的,在这种情况下它们被翻译:user.home-User'shomedirectoryuser.dir-User'scurrentworkingdire