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

如何定期逐出使用频率较低的缓存区域?

洪永长
2023-03-14

根据该Ehcache_Configuration_Guide.pdf

配置如何影响元素刷新和逐出
以下示例显示了具有特定过期时间的缓存:ings:

我没有找到任何如何定期配置驱逐的示例,

它是可配置的吗?还是必须为hibernate硬编码?

根据此页面,ExpireyTaskExtension.java在ehCache中没有默认的时间驱逐规则


共有1个答案

凌博实
2023-03-14
import java.util.Timer;
import java.util.TimerTask;
import net.sf.ehcache.CacheManager;

public class EhCacheExpiryTask {
    class ExpiryTask extends TimerTask{
        @Override
        public void run() {
            for (CacheManager manager : CacheManager.ALL_CACHE_MANAGERS) {
                for (String name : manager.getCacheNames()) {
                    //manager.getCache(name).getCacheConfiguration().setStatistics(true);
                    manager.getCache(name).evictExpiredElements();                 
                } 
            }        
        }
    }
    private Timer timer;
    private long period;
    private ExpiryTask expiryTask;
    public EhCacheExpiryTask(long period){
        this.period = period;
        this.timer = new Timer();
    } 
    public void stop(){
        timer.cancel();
    }
    public void start(){
        expiryTask = new ExpiryTask();      
        timer.schedule(expiryTask, 10000, period);
    }
}
 类似资料:
  • 我有一个关于内存系统遵循的策略的基本问题。 考虑一个具有私有L1和L2缓存的核心。在L2缓存之后,我们有一个相干流量运行的总线。现在,如果从L2高速缓存中逐出地址(X)的高速缓存行,是否有必要从L1高速缓存中逐出该地址?? 逐出的原因可能是它有助于保持一致性协议的不变[如果l2中的一行显示无效,则此核心不包含此地址]。

  • 在我的项目中,我使用了一个@Cacheable注释ia一个服务方法,它返回涉及书籍和一些标记的计算结果,我想在一个@Controller类方法中退出缓存,该方法将一本新书添加到数据库中,因为这本新书将是新计算所必需的。 服务类:@Cacheable("metas") 控制器类:@RequestMapping@CacheEvict(value=“metas”,allEntries=true)

  • 我计划使用infinispan作为我的Hibernate应用程序二级缓存。My all entities具有生命周期属性[新建- 简单地说,当实体生命周期属性状态到达已完成状态时,我想从缓存中驱逐实体。据我所知,Infinispan不支持自定义驱逐策略。处理我的情况的最佳方式是什么?

  • 我正试图驱逐我的持久性实体管理器中的二级缓存。看起来我可以使用javax.persistence.Cache接口中定义的以下函数: 为了得到Cache对象,我可以使用javax.persistence.EntityManagerFactory接口中定义的以下函数: 我连接我的EntityManagerFactory是这样的: 使用以下applicationContext配置文件: 当我对对象调用g

  • 我使用Spring缓存抽象,定义了多个缓存。有时,当数据更改时,我想逐出多个缓存。是否可以使用Spring的CacheExit注释逐出多个缓存?

  • 我有以下要求:我需要解压一个zip或tar.gz文件。运行此代码的目标平台是AEM 6.1环境。该系统过去有一些性能问题。尤其是内存使用率非常高。因此我必须保存内存。zip/tar.gz文件包含一些文本文件,SVG,PNG和EPS文件以及更多我不需要的文件。存档文件将作为ByteArrayInputStream下载并提供。 我做了一些研究,试图找出最好的方法。ApacheCommons提供了用于解