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** 是一个用 Java 实现的高效、简洁的缓存管理类库。它不仅适用于开发高性能的应用程序,而且由于其实现了线程安全,因此非常适合在多线程环境中使用。...
4. `CacheEventListener`:监听缓存事件,如添加、更新、移除等,实现定制逻辑。 四、Ehcache最佳实践 1. 适当设置缓存大小:根据应用需求和可用内存合理设定缓存容量,避免过度消耗内存资源。 2. 使用缓存策略:...
`CacheEvent`、`CacheEventListener`等用于实现缓存监听。 ##### 4.2 环境搭建 - **基本步骤**: 1. 下载并解压Ehcache压缩包。 2. 配置`ehcache.xml`文件,定义缓存规则。 3. 在项目中引入Ehcache依赖。 4. ...
以上就是Ehcache在Maven项目中的基本使用方法和关键知识点,包括配置、集成、操作缓存、过期策略、事件监听以及分布式缓存的实现。通过熟练掌握这些概念,你可以有效地利用Ehcache提升Java应用的性能。
6. **缓存事件和监听器**:Ehcache支持监听缓存事件,例如元素添加、更新、移除等。开发者可以通过实现`net.sf.ehcache.event.CacheEventListener`接口来定制监听器,以便在这些事件发生时执行自定义逻辑。 7. **...
- **监听器插件化**:通过实现CacheManagerEventListener和CacheEventListener接口,可以轻松添加定制化的缓存管理器监听器和缓存事件监听器。 - **节点发现、冗余器和监听器插件化**:这些组件均支持插件化,允许...
7. **缓存事件监听器(CacheEventListener)**:允许开发者监听缓存操作,如添加、更新、移除等,以便在这些事件发生时执行相应的逻辑。 8. **缓存管理API**:Ehcache提供了丰富的API供开发者进行缓存的创建、配置...
5. **事件监听**:Ehcache 支持缓存事件监听,比如当缓存项被添加、删除或替换时触发相应的回调。这可以通过实现 `CacheEventListener` 接口并将其注册到缓存管理器中来实现。 6. **分布式缓存**:Ehcache 也支持...
接着,在Spring配置文件中声明`EhCacheManagerFactoryBean`来实例化EhCache缓存管理器。此外,还需要配置一个EhCache配置文件(如`ehcache.xml`),其中定义了缓存的命名空间、大小限制、过期策略等。 4. **使用...
- **缓存事件监听器**: 支持 CacheEventListener 接口,提供了丰富的事件通知机制,如元素的添加、更新、删除和过期等。 **8. JMX 支持** - **默认启用**: Ehcache 默认启用了 JMX 功能,可以通过 JMX 监控和管理 ...
6. **缓存更新通知**: 当缓存中的数据发生变化时,Ehcache 可以通过监听器(CacheEventListener)通知应用程序,以便及时更新相关视图。 在 "ehcacheDemo" 中,我们可能会看到以下关键组件和操作: - **初始化 ...
- `CacheEventListener`:监听缓存事件,如添加、移除、更新等,允许进行定制化的事件处理。 - `CacheWriter`和`CacheLoader`:分别用于在缓存缺失时写入数据和加载数据,实现缓存与外部数据源的交互。 通过这些...
8. **事件监听**:Spring 4 允许注册缓存事件监听器,如 `CacheEventListener`,可以监听缓存的添加、删除和替换事件,以便在这些操作发生时执行自定义逻辑。 9. **集成其他框架**:Spring 4 的缓存框架与其他...
osCache的配置主要通过XML文件完成,包括缓存配置、更新策略、缓存监听器等。例如: ```xml diskPersistent="false" timeToIdleSeconds="120" timeToLiveSeconds="120" memoryStoreEvictionPolicy="LRU"> ``` 在...
- **缓存监听器**:提供缓存事件监听接口,可以在缓存操作前后执行自定义逻辑。 3. **Oscache的安装与配置** - **添加依赖**:在项目中引入Oscache的JAR包,通常可以通过Maven或Gradle等构建工具来管理。 - **...