`

ehcache 缓存监听器的使用CacheEventListener

 
阅读更多

ehcache通过配置,可以实现诸如,内容最长缓存时间,内容最长没有被访问时间等功能,当以上时间expired,缓存中的内容将清空。

ehcache 缓存策略:
read-only:无需修改, 那么就可以对其进行只读 缓存,注意,在此策略下,如果直接修改数据库,即使能够看到前台显示效果,
但是将对象修改至cache中会报error,cache不会发生作用。另:删除记录会报错,因为不能在read-only模式的对象从cache中删除。
read-write:需要更新数据,那么使用读/写缓存 比较合适,前提:数据库不可以为serializable transaction isolation level
(序列化事务隔离级别)
nonstrict-read-write:只偶尔需要更新数据(也就是说,两个事务同时更新同一记录的情况很不常见),也不需要十分严格的事务隔离,
那么比较适合使用非严格读/写缓存策略。

ehcache如何根据数据库的修改更新缓存内容?
可以为ehcache定制修改监听器,当监听的内容被修改时,clear相应内容。

    <cache
        name="commandCache"
        maxElementsInMemory="10000"
        eternal="false"
        timeToIdleSeconds="120"
        timeToLiveSeconds="0"
        overflowToDisk="true">
        <cacheEventListenerFactory class="com.iding.pos.server.cache.CommandCacheEventListenerFactory"/>
    </cache>

public class OrderCacheEventListener implements CacheEventListener {
    protected static final Logger logger = LoggerFactory.getLogger(OrderCacheEventListener.class);

    public void notifyElementRemoved(Ehcache ehcache, Element element) throws CacheException {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void notifyElementPut(Ehcache ehcache, Element element) throws CacheException {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void notifyElementUpdated(Ehcache ehcache, Element element) throws CacheException {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void notifyElementExpired(Ehcache ehcache, Element element) {
        PosService posService = (PosService) ServiceLocator.getService("posService");
        // 订单没有正常被POS机处理,所以在这里需要设置订单状态
        long orderId = (Long)element.getObjectValue();
        logger.debug("the order of:" + orderId + " have expired.");
        posService.updateOrderStatus(orderId, Const.POS_RECIVE_FAILD);
        // 从缓存中清除
        ehcache.remove(element.getObjectKey());
       
        // 如果长时间没反应则可能POS机有问题(这里做一下标识)
       
    }

    public void notifyElementEvicted(Ehcache ehcache, Element element) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void notifyRemoveAll(Ehcache ehcache) {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public void dispose() {
        //To change body of implemented methods use File | Settings | File Templates.
    }

    public Object clone() throws CloneNotSupportedException {
        return null; //To change body of implemented methods use File | Settings | File Templates.
    }
}

分享到:
评论

相关推荐

    EHCache缓存

    ### EHCache缓存知识点详解 #### 一、EHCache简介 **EHCache** 是一个用 Java 实现的高效、简洁的缓存管理类库。它不仅适用于开发高性能的应用程序,而且由于其实现了线程安全,因此非常适合在多线程环境中使用。...

    Ehcache Java 缓存框架.zip

    4. `CacheEventListener`:监听缓存事件,如添加、更新、移除等,实现定制逻辑。 四、Ehcache最佳实践 1. 适当设置缓存大小:根据应用需求和可用内存合理设定缓存容量,避免过度消耗内存资源。 2. 使用缓存策略:...

    ehcache例子

    以上就是Ehcache在Maven项目中的基本使用方法和关键知识点,包括配置、集成、操作缓存、过期策略、事件监听以及分布式缓存的实现。通过熟练掌握这些概念,你可以有效地利用Ehcache提升Java应用的性能。

    ehcache jar包 源码

    6. **缓存事件和监听器**:Ehcache支持监听缓存事件,例如元素添加、更新、移除等。开发者可以通过实现`net.sf.ehcache.event.CacheEventListener`接口来定制监听器,以便在这些事件发生时执行自定义逻辑。 7. **...

    ehcache知识简介

    - **监听器插件化**:通过实现CacheManagerEventListener和CacheEventListener接口,可以轻松添加定制化的缓存管理器监听器和缓存事件监听器。 - **节点发现、冗余器和监听器插件化**:这些组件均支持插件化,允许...

    ehcache-1.4.1.tgz

    7. **缓存事件监听器(CacheEventListener)**:允许开发者监听缓存操作,如添加、更新、移除等,以便在这些事件发生时执行相应的逻辑。 8. **缓存管理API**:Ehcache提供了丰富的API供开发者进行缓存的创建、配置...

    spring ehcache

    5. **事件监听**:Ehcache 支持缓存事件监听,比如当缓存项被添加、删除或替换时触发相应的回调。这可以通过实现 `CacheEventListener` 接口并将其注册到缓存管理器中来实现。 6. **分布式缓存**:Ehcache 也支持...

    spring整合EhCache 简单例子

    接着,在Spring配置文件中声明`EhCacheManagerFactoryBean`来实例化EhCache缓存管理器。此外,还需要配置一个EhCache配置文件(如`ehcache.xml`),其中定义了缓存的命名空间、大小限制、过期策略等。 4. **使用...

    ehcache 介绍

    - **缓存事件监听器**: 支持 CacheEventListener 接口,提供了丰富的事件通知机制,如元素的添加、更新、删除和过期等。 **8. JMX 支持** - **默认启用**: Ehcache 默认启用了 JMX 功能,可以通过 JMX 监控和管理 ...

    可以直接运行的chcache实例

    6. **缓存更新通知**: 当缓存中的数据发生变化时,Ehcache 可以通过监听器(CacheEventListener)通知应用程序,以便及时更新相关视图。 在 "ehcacheDemo" 中,我们可能会看到以下关键组件和操作: - **初始化 ...

    ENCACHE缓存简介

    - `CacheEventListener`:监听缓存事件,如添加、移除、更新等,允许进行定制化的事件处理。 - `CacheWriter`和`CacheLoader`:分别用于在缓存缺失时写入数据和加载数据,实现缓存与外部数据源的交互。 通过这些...

    pring4新特性缓存框架增强共6页.pdf.zip

    8. **事件监听**:Spring 4 允许注册缓存事件监听器,如 `CacheEventListener`,可以监听缓存的添加、删除和替换事件,以便在这些操作发生时执行自定义逻辑。 9. **集成其他框架**:Spring 4 的缓存框架与其他...

    oscache缓存技术入门实例

    osCache的配置主要通过XML文件完成,包括缓存配置、更新策略、缓存监听器等。例如: ```xml diskPersistent="false" timeToIdleSeconds="120" timeToLiveSeconds="120" memoryStoreEvictionPolicy="LRU"&gt; ``` 在...

    Oscache攻略

    - **缓存监听器**:提供缓存事件监听接口,可以在缓存操作前后执行自定义逻辑。 3. **Oscache的安装与配置** - **添加依赖**:在项目中引入Oscache的JAR包,通常可以通过Maven或Gradle等构建工具来管理。 - **...

Global site tag (gtag.js) - Google Analytics