博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spring Caching集成Ehcache
阅读量:4135 次
发布时间:2019-05-25

本文共 3256 字,大约阅读时间需要 10 分钟。

Ehcache可以对页面、对象、数据进行缓存,同时支持集群/分布式缓存。在应用中用于常常需要读取的数据交换,而不是通过DB DAO数据交换(cache不占用DB宝贵的NIO,直接交换堆内存)。

整合Spring、Hibernate也非常的简单,Spring对Ehcache的支持也非常好。EHCache支持内存和磁盘的缓存,支持LRU、LFU和FIFO多种淘汰算法,支持分布式的Cache。

从Spring3.1开始添加了对缓存的支持。

 

Maven的依赖:

net.sf.ehcache
ehcache
2.9.0
ch.qos.logback
logback-classic
1.0.13
org.springframework
spring-context
4.1.4.RELEASE
org.springframework
spring-context-support
4.1.4.RELEASE

 

Gradle的依赖:

apply plugin: 'java'apply plugin: 'eclipse-wtp'version = '1.0'// Uses JDK 7sourceCompatibility = 1.7targetCompatibility = 1.7// Get dependencies from Maven central repositoryrepositories {    mavenCentral()}//Project dependenciesdependencies {    compile 'org.springframework:spring-context:4.1.4.RELEASE'    compile 'org.springframework:spring-context-support:4.1.4.RELEASE'    compile 'net.sf.ehcache:ehcache:2.9.0'    compile 'ch.qos.logback:logback-classic:1.0.13'}

spring-config-cache.xml:

ehcache.xml:

参数说明:

name:    cache的名称,必填。    maxEntriesLocalHeap:    在内存中的最大保存对象数量,0则不限,如果填必须小于Integer.MAX_SIZE (2147483647)。    maxEntriesLocalDisk:    磁盘中保存的数量,0则不限,一般填0。    eternal:    true:对象永不过期。false:对象有过期时限。    以下为选填:    maxEntriesInCache:    只在分布式环境使用,集群节点中的最大数量,0则不限    overflowToOffHeap:    企业版Ehcache才有的功能,用于java off-heap(off-heap允许Java直接操作内存空间),这样的目的是为了节省宝贵的jvm堆,又避免磁盘存储的低速。    maxBytesLocalHeap:    定义缓存可以从VM的堆中使用多少字节,如果定义这个则不能再定义maxEntriesLocalHeap。    maxBytesLocalOffHeap:    定义缓存可以从OffHeap中使用多少字节    maxBytesLocalDisk:    定义缓存可以从磁盘中使用多少OffHeap字节    timeToIdleSeconds:    对象空闲过期时间,以秒为单位,如果是0则不过期。只对eternal为false的有效。    timeToLiveSeconds:    对象生存时间,一般为0,为永久生存。只对eternal为false的有效。    上边的两个配置容易混淆,区别:    timeToLiveSeconds=x:缓存自创建日期起至失效时的间隔时间x;对象空闲时间,指对象在多长时间没有被访问就会失效。    timeToIdleSeconds=y:缓存创建以后,最后一次访问缓存的日期至失效之时的时间间隔y;    diskExpiryThreadIntervalSeconds:     对象检测线程运行时间间隔。标识对象状态的线程多长时间运行一次。     diskSpoolBufferSizeMB:    DiskStore使用的磁盘大小,默认值30MB。每个cache使用各自的DiskStore。        memoryStoreEvictionPolicy:     如果内存中数据超过内存限制,向磁盘缓存时的策略。默认值LRU,可选FIFO、LFU。    clearOnFlush:    flush()的时候清除内存。    persistence sub-element.  持久化策略,这是子属性,一般不用设置。    * localRestartable - 可以重用的缓存,持久化在磁盘,只有企业版才有这个功能.    * localTempSwap - 当(on-heap and/or off-heap)满的时候保存到磁盘,但并不重用持久化,即进程结束则缓存全部清除。    * none - 不持久化

 

使用

import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.Cache;import org.springframework.cache.CacheManager;import org.springframework.stereotype.Service;......private Cache cache;......    public void addObjToCache(Object key, Object value) {        cache.put(key, value);    }    public String getValueByCache(String key) {        return (String)cache.get(key).get();    }......

 

转载地址:http://lxpvi.baihongyu.com/

你可能感兴趣的文章
(python版)《剑指Offer》JZ01:二维数组中的查找
查看>>
Spring MVC中使用Thymeleaf模板引擎
查看>>
PHP 7 的五大新特性
查看>>
深入了解php底层机制
查看>>
PHP中的stdClass 【转】
查看>>
XHProf-php轻量级的性能分析工具
查看>>
OpenCV gpu模块样例注释:video_reader.cpp
查看>>
就在昨天,全球 42 亿 IPv4 地址宣告耗尽!
查看>>
Mysql复制表以及复制数据库
查看>>
Linux分区方案
查看>>
如何使用 systemd 中的定时器
查看>>
git命令速查表
查看>>
linux进程监控和自动重启的简单实现
查看>>
OpenFeign学习(三):OpenFeign配置生成代理对象
查看>>
OpenFeign学习(四):OpenFeign的方法同步请求执行
查看>>
OpenFeign学习(六):OpenFign进行表单提交参数或传输文件
查看>>
Ribbon 学习(二):Spring Cloud Ribbon 加载配置原理
查看>>
Ribbon 学习(三):RestTemplate 请求负载流程解析
查看>>
深入理解HashMap
查看>>
XML生成(一):DOM生成XML
查看>>