在当下主流的开发缓存技术当中,memcached/redis/ehcache最常用,本文主要介绍其中ehcahce缓存的常用配置和简单实用:
1.在工程的src目录下添加ehcache.xml配置文件:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <ehcache>
3. <diskStore path="java.io.tempdir" />
4. <defaultCache maxElementsInMemory="1000" eternal="false"
5. timeToIdleSeconds="120" timeToLiveSeconds="120" overflowToDisk="true" />
6. <cache name="ehcacheName" maxElementsInMemory="10000"
7. eternal="false" timeToIdleSeconds="300000" timeToLiveSeconds="600000"
8. overflowToDisk="true" />
9. </ehcache>
其中主要的配置参数详解如下:
name:缓存名称.
maxElementsInMemory:缓存中的最大个数.
eternal:对象是否永久有效,如果为true,timeout将不起作用,一般设置为false.
timeToIdleSeconds:对象在失效前的闲置时间,默认为0,eternal为false时设置有效,
timeToLiveSeconds:对象在失效前的存活时间,默认为0,eternal为false时设置有效,
overflowToDisk:内存中的对象数量达到maxElementsInMemory时,将会将超过的对象写入磁盘.
diskSpoolBufferSizeMB:磁盘缓存区大小,默认30M,
maxElementsOnDisk:磁盘上的最大缓存个数,
clearOnFlush:内存数量最大时是否清楚.
2.在spring配置文件中配置ehcache(声明cacheManagerFactory和cacheManager)
1. <!-- 声明cacheManagerFactory -->
2. <bean id="cacheManagerFactory"
3. class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean"
4. p:configLocation="classpath:ehcache.xml"></bean>
5.
6. <!-- 声明cacheManager -->
7. <bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager"
8. p:cacheManager-ref="cacheManagerFactory" ></bean>
3.定义EhCache工具类
1. public class EHCache {
2. private static final CacheManager cacheManager = new CacheManager();
3. private Cache cache;
4. public EHCacheService(){
5. this.cache=cacheManager.getCache("ehcacheName");
6. }
7.
8. public Cache getCache() {
9. return cache;
10. }
11.
12. public void setCache(Cache cache) {
13. this.cache = cache;
14. }
15.
16.
17.
18. /*
19. * 通过名称从缓存中获取数据
20. */
21. public Object getCacheElement(String cacheKey) throws Exception {
22. net.sf.ehcache.Element e = cache.get(cacheKey);
23. if (e == null) {
24. return null;
25. }
26. return e.getValue();
27. }
28. /*
29. * 将对象添加到缓存中
30. */
31. public void addToCache(String cacheKey, Object result) throws Exception {
32. new Element(cacheKey, result);
33. cache.put(element);
34. }
35.
36.
37. }
4.测试
1. public class Test{
2. new EHCache();
3. public void Test(){
4. //测试将json对象存入缓存中
5. new JSONObject();
6. "name","lsz");
7. "cache_json",obj);
8.
9. //从缓存中获取
10. "cache_json");
11. System.out.println(getobj.toString());
12. }
13. }