package com.datang.common.cache.flat;
import java.net.URL;
import java.util.List;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Ehcache;
import net.sf.ehcache.Element;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.datang.common.tools.util.ResourceUtils;
public abstract class FlatCache {
/**
* 日志
*/
private static final Logger LOGGER = LoggerFactory
.getLogger(FlatCache.class);
/**
* 缓存配置文件
*/
private static String CACHE_CONFIG_FILE = "config/flat_cache.xml";
/**
* Ehanche的缓存管理
*/
private static CacheManager cacheManager = null;
/**
* 设置缓存配置文件,最开始设置才有效果,一旦缓存加载则不能改变
*
* @param cacheConfigFile
*/
public static void setCacheConfigFile(String cacheConfigFile) {
CACHE_CONFIG_FILE = cacheConfigFile;
}
/**
* 按缺省配置创建缓存
*
* @param cacheName
*/
public static void createCache(String cacheName) {
getCacheManager().addCache(cacheName);
}
/**
* 添加缓存
*
* @param cacheName
* @param key
* @param value
*/
public static void put(String cacheName, String key, Object value) {
Ehcache cache = getCacheManager().getEhcache(cacheName);
cache.put(new Element(key, value));
}
/**
* 根据缓存名与key获取值
*
* @param cacheName
* @param key
* @return
*/
public static Object get(String cacheName, String key) {
Ehcache cache = getCacheManager().getEhcache(cacheName);
Element e = cache.get(key);
return e == null ? null : e.getObjectValue();
}
/**
* 获取缓存名
*
* @return
*/
public static String[] getCacheNames() {
return getCacheManager().getCacheNames();
}
/**
* 获取缓存的Keys
*
* @param cacheName
* @return
*/
@SuppressWarnings("unchecked")
public static List<String> getKeys(String cacheName) {
Ehcache cache = getCacheManager().getEhcache(cacheName);
return (List<String>) cache.getKeys();
}
/**
* 清除所有
*/
public static void clearAll() {
getCacheManager().clearAll();
}
/**
* 清空指定缓存
*
* @param cacheName
*/
public static void clear(String cacheName) {
getCacheManager().getCache(cacheName).removeAll();
}
/**
* 删除指定对象
*
* @param cacheName
* @param key
* @return
*/
public static boolean remove(String cacheName, String key) {
return getCacheManager().getCache(cacheName).remove(key);
}
/**
* 获取缓存大小
*
* @param cacheName
* @return
*/
public static int getSize(String cacheName) {
return getCacheManager().getCache(cacheName).getSize();
}
/**
* 获取CacheManager
*
* @return
*/
private static CacheManager getCacheManager() {
if (cacheManager != null) {
return cacheManager;
}
try {
URL url = ResourceUtils.getResource(CACHE_CONFIG_FILE);
cacheManager = CacheManager.create(url);
} catch (RuntimeException e) {
LOGGER.error("init flat cache failed", e);
throw e;
}
return cacheManager;
}
}
配置文件
<ehcache xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="ehcache.xsd"
updateCheck="true" monitoring="autodetect"
dynamicConfig="true">
<defaultCache
maxElementsInMemory="20"
eternal="false"
overflowToDisk="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="1800">
</defaultCache>
<cache name="CDG-CACHE"
maxElementsInMemory="20"
overflowToDisk="false"
eternal="false"
timeToIdleSeconds="1800"
timeToLiveSeconds="1800"
memoryStoreEvictionPolicy="LRU"
transactionalMode="off"
/>
</ehcache>
分享到:
相关推荐
本文将详细讲解"cache/ehcache缓存使用"的相关知识点,包括缓存的基本概念、Ehcache的介绍、以及如何在Java应用中使用Ehcache进行缓存操作。 首先,我们要理解什么是缓存。缓存是一种存储技术,它临时存储常用或...
Ehcache是一个高性能的、基于Java的进程内缓存解决方案,它被广泛应用于各种Java应用程序,包括Java EE和轻量级容器。Ehcache的主要优势在于它的快速响应、易用性和丰富的缓存策略。它提供了两种级别的缓存存储:...
【EHCache缓存技术介绍】 缓存技术是提高软件系统性能的重要手段,特别是在处理大量数据时,通过将常用数据存储在内存中,可以显著减少对硬盘或数据库的访问,从而加快数据获取速度。EHCache是一种广泛使用的开源...
**Ehcache缓存** Ehcache是一种广泛使用的开源Java分布式缓存系统,它为高性能应用程序提供了内存存储和缓存解决方案。在Java世界中,尤其是在持久化框架如Hibernate的使用中,Ehcache扮演了至关重要的角色。由于...
为了提高性能和减少对数据库的直接访问,MyBatis 提供了缓存功能,而Ehcache 是一个广泛使用的开源Java缓存库,可以集成到MyBatis 中以实现高效的缓存管理。 在MyBatis 中添加Ehcache 缓存支持,首先需要确保项目...
Ehcache 是一个流行的 Java 缓存框架,提供了强大的缓存机制,帮助开发者提高应用程序的性能和可扩展性。 Ehcache 的配置主要包括 diskstore、defaultCache、cache 三个部分,这三个部分的配置将决定 ehcache 的缓存...
**EHcache缓存框架** EHcache是一款开源的Java缓存框架,它被广泛应用于提高应用程序的性能和响应速度,通过存储频繁访问的数据到内存中,避免了每次请求时都进行昂贵的数据库查询。EHcache的设计目标是轻量级、高...
通过上述对Ehcache缓存配置的深入解析,我们可以看到,合理配置Ehcache不仅可以显著提升JavaWeb应用的性能,还能有效管理资源,避免不必要的系统负担。掌握这些关键配置项的含义及用法,对于优化应用、提升用户体验...
Ehcache则是一款广泛使用的开源缓存解决方案,用于提高应用程序性能,减少数据库负载。本篇文章将详细探讨如何在Spring框架中集成并实现基于方法的缓存机制,利用Ehcache来优化数据访问。 首先,我们需要理解Spring...
Ehcache是由Terracotta公司开发的内存缓存框架,它被广泛应用于各种Java应用程序,包括Web应用、大数据处理、数据库连接池等场景。Ehcache提供了一个简单易用的API,允许开发者轻松地在应用中集成缓存功能,从而减少...
"ehcache缓存依赖的jar"这个标题暗示我们将讨论Ehcache的核心库及其依赖关系。 Ehcache的核心JAR文件是`ehcache.jar`,它包含了Ehcache的所有核心组件和接口。这个文件提供了缓存管理、缓存配置、缓存策略(如LRU、...
**Ehcache缓存系统详解** Ehcache是一款开源、高性能、轻量级的Java缓存框架,广泛应用于各种Java应用程序中,以提高数据访问速度并降低数据库负载。它的核心特性包括内存缓存、磁盘存储和分布式缓存,使得在大数据...
Ehcache是一个开源的、高性能的Java缓存框架,它被广泛用于提高应用程序的性能,减少数据库的负载,以及优化数据访问。在本文中,我们将深入探讨Ehcache的基本概念、配置、使用方法以及其在实际应用中的优势。 **...
Ehcache 是一款广泛应用于Java开发中的开源缓存框架,其高效、易用且功能强大的特点使其在处理大量数据快速访问的问题上表现出色。本文将详细介绍Ehcache的基础知识、配置以及如何在实际项目中应用。 1. **Ehcache...
Ehcache是一个流行的Java缓存库,用于在应用程序中存储数据,以提高性能并减少对数据库的访问。它被广泛应用于各种系统,特别是在处理大量数据和需要快速响应时间的应用中。下面将详细介绍Ehcache的核心概念、配置...
Ehcache是一个高性能、轻...总的来说,Ehcache提供的分布式缓存能力可以显著提升应用性能,而文件转树结构则有助于更好地管理和操作文件数据。通过这两者的结合,开发者可以在处理大量文件数据时实现高效、快速的检索。
**标题解析:** "ehcache缓存页面.doc" 这个标题表明了文档内容主要关于Ehcache,一个广泛使用的Java缓存库,用于提高应用程序性能。它可能详细介绍了Ehcache如何被用来缓存页面内容,以减少数据库查询和提升响应...
通过以上步骤,你就可以在Spring Boot应用中成功集成并使用EhCache作为缓存解决方案。EhCache的配置可以根据实际需求进行调整,比如设置缓存过期时间、大小限制、缓存策略等。同时,EhCache还支持与其他缓存相关的...
总之,理解和掌握Hibernate中的二级缓存ehcache对于提高Java应用的性能至关重要。正确配置和使用ehcache能有效减少数据库的负载,提高系统的响应速度。在实际项目中,根据业务需求调整缓存策略,平衡性能与资源消耗...
2. 在Spring配置文件中配置Ehcache缓存管理器。 3. 在需要缓存的方法或类上添加`@Cacheable`、`@CacheEvict`等注解。 4. 可选:配置缓存切面,如`@EnableCaching`。 **5. 性能优化** - 选择合适的缓存策略(LRU、...