ehcache缓存的配置和使用
1.缓存和缓存的作用
缓存就是数据交换的缓冲区,由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。当服务器的数据库中的某数据被频繁访问的时候,由于频繁的读取数据库会增大数据库的压力,同时也影响效率。把高频访问的数据放到缓存中,可以提高访问效率,提升用户体验。常用的开源缓存方法有ehcache,memcache,redis,mongoDB等,这些缓存方式各有优缺点。
1.ehcache是一个纯Java的进程内缓存框架,具有快速、精干等特点。优点是小巧,使用简单,速度快,效率高,缺点是缓存共享麻烦,集群分布式应用不方便。
2.memcached是一套分布式的高速缓存系统,大致的原理也和ehcache相同.相对ehcache而言,memcached是一个工 具,ehcache是一个框架,memcached更加底层更加灵活.Memcached的优点是可以利用多核优势,单实例吞吐量极高。缺点是只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。无法进行持久化,无法进行数据同步。
3.Redis是用C语言开发的一个开源的高性能键值对(key-value)数据库。优点是支持多种数据结构,缺点是Redis只能使用单线程,性能受限于CPU性能。
4.mongoDB 是一种文档性的数据库,主要解决海量数据的访问效率问题。缺点是不适合小数据量缓存,优点是适合大文件如日志等文件的缓存。
2.ehcache的配置
1.在maven的pom.xml文件中加入以下依赖
2.10.4
net.sf.ehcache
ehcache
${ehcache.version}
2.在resource问价夹下放入ehcache.xml文件
3.整合spring的配置,在resource文件夹下创建spring-ehcache.xml文件。
并在web.xml中添加配置spring-ehcache.xml
contextConfigLocation
classpath:applicationContext.xml
classpath:spring-ehcache.xml
3.ehcache的使用
ehcache的使用有两种方式,一种是代码操作,一种是注解操作。
1.代码操作:
//存入缓存 其中cacheName 和ehcache.xml中的配置的name保持一致
public void saveCache (String cacheName,String key,String value){
CacheManager create = CacheManager.create(this.getClass().getResourceAsStream("/ehcache.xml"));
Cache cache = create.getCache(cacheName);
cache.put(new Element(key, value));
}
//取出缓存
public String getCache(String cacheName,String key){
CacheManager create = CacheManager.create(this.getClass().getResourceAsStream("/ehcache.xml"));
Cache cache = create.getCache(cacheName);
Element element = cache.get(key);
return (String) element.getObjectValue();
}
2.注解操作:
在service的方法上加上注解,如:@Cacheable(value,key),value的值和ehcache.xml中的配置的name保持一致
@Cacheable,表明所修饰的方法是可以缓存的:当第一次调用这个方法时,它的结果会被缓存下来,在缓存的有效时间内,以后访问这个方法都直接返回缓存结果,不再执行方法中的代码段
@CachePut,与@Cacheable不同,@CachePut不仅会缓存方法的结果,还会执行方法的代码段
@CacheEvict,与@Cacheable功能相反,@CacheEvict表明所修饰的方法是用来删除失效或无用的缓存数据
总结:ehcache的使用相对比较简单一下,以上内容也是借鉴了一些前人的基础,加上自己的一些理解,如有错误,欢迎指正。