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

本文共 3193 字,大约阅读时间需要 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://qzwfx.baihongyu.com/

你可能感兴趣的文章
html代码究竟什么用途
查看>>
Hadoop HDFS编程 API入门系列之路径过滤上传多个文件到HDFS(二)
查看>>
Python version 2.7 required, which was not foun...
查看>>
context:annotation-config vs component-scan
查看>>
经典sql
查看>>
CSS3边框会动的信封
查看>>
JavaWeb实例设计思路(订单管理系统)
查看>>
source insight中的快捷键总结
查看>>
PC-IIS因为端口问题报错的解决方法
查看>>
java四种线程池简介,使用
查看>>
ios View之间的切换 屏幕旋转
查看>>
typedef BOOL(WINAPI *MYFUNC) (HWND,COLORREF,BYTE,DWORD);语句的理解
查看>>
jsp 特殊标签
查看>>
[BZOJ] 1012 [JSOI2008]最大数maxnumber
查看>>
gauss消元
查看>>
多线程-ReentrantLock
查看>>
数据结构之链表与哈希表
查看>>
IIS7/8下提示 HTTP 错误 404.13 - Not Found 请求筛选模块被配置为拒绝超过请求内容长度的请求...
查看>>
http返回状态码含义
查看>>
响应式网站对百度友好关键
查看>>