Ehcache基于java API实现
上代码:
package com.utils.cacheutils; import com.situopenapi.constant.EhcacheConstants;
import com.situopenapi.constant.GestureImageConstants;
import com.situopenapi.data.systemUtils.ExecResult;
import net.sf.ehcache.Cache;
import net.sf.ehcache.CacheManager;
import net.sf.ehcache.Element; import java.util.List; /**
* 使用ehcache进行数据的缓存
*
*/
public class EhcacheManager { private static CacheManager cacheManager; static {
cacheManagerInit();
} /**
* EhcacheConstants.CACHE_NAME, cache name
* EhcacheConstants.MAX_ELEMENTS_MEMORY, 缓存最大个数
* EhcacheConstants.WHETHER_OVERFLOW_TODISK, 内存不足时是否启用磁盘缓存
* EhcacheConstants.WHETHER_ETERNAL, 缓存中的对象是否为永久的,如果是,超过设置将被忽略,对象从不过期
* EhcacheConstants.timeToLiveSeconds, 缓存数据的生存时间;元素从构建到消亡的最大时间间隔值,只在元素不是永久保存时生效;若该值为0表示该元素可以停顿无穷长的时间
* EhcacheConstants.timeToIdleSeconds 对象在失效前的允许闲置时间,仅当eternal=false对象不是永久有效时使用;可选属性,默认值是0可闲置时间无穷大;
*/
private static CacheManager cacheManagerInit() {
if (cacheManager == null) { //创建一个缓存管理器
cacheManager = CacheManager.create();
//建立一个缓存实例
Cache memoryOnlyCache = new Cache(EhcacheConstants.CACHE_NAME, EhcacheConstants.MAX_ELEMENTS_MEMORY, EhcacheConstants.WHETHER_OVERFLOW_TODISK, EhcacheConstants.WHETHER_ETERNAL, EhcacheConstants.timeToLiveSeconds, EhcacheConstants.timeToIdleSeconds);
//在内存管理器中添加缓存实例
cacheManager.addCache(memoryOnlyCache);
return cacheManager;
}
return cacheManager;
} /**
* 向缓存中添加元素
*
* @param key
* @param value
*/
public static void put(String ehcacheInstanceName, String key, ExecResult<Object> value) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
cache.put(new Element(key, value)); } /**
* 根据key获取对应的value值
*
* @param key
* @return
*/
public static Object getValue(String ehcacheInstanceName, Object key) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
Object value = cache.get(key).getObjectValue();
return value;
} /**
*获取缓存中最新的结果
*
* @return 最后一次添加的结果集
*/
public static Object getLastValue(String ehcacheInstanceName) {
boolean flag = true; Cache cache = cacheManager.getCache(ehcacheInstanceName);
List keys = cache.getKeys();
String string = getMaxKey(keys).toString();
return getValue(ehcacheInstanceName, string);;
} /**
* 在缓存管理器中获取一个缓存实例
* 返回缓存数据个数
*
* @return
*/
public static int getCacheSize(String ehcacheInstanceName) {
Cache cache = cacheManager.getCache(ehcacheInstanceName);
return cache.getSize();
} private static Object getMaxKey(List source) { long[] target = new long[source.size() - 1];
for (int i = 0; i < source.size() - 1; i++) {
target[i] = Long.parseLong((String) source.get(i));
}
long maxKey = target[0];
for (int i = 0; i < target.length; i++) {
if (maxKey < target[i]) {
maxKey = target[i];
}
}
return maxKey;
} }
顺利完毕!!!
有疑惑请留言,如若不对之处,感谢提出;
Ehcache基于java API实现的更多相关文章
- spark 中的RDD编程 -以下基于Java api
1.RDD介绍: RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...
- 基于Java API for WebSocket (JSR-356)的标准websocket客户端
maven依赖 springboot <dependency> <groupId>org.springframework.boot</groupId> <ar ...
- SpringMVC常用配置-Controller中的各种配置(基于Java API和注解)
- SpringMVC操作指南-MVC-搭建SpringMVC项目结构(基于Java API和注解)
- MyBatis操作指南-搭建项目基础环境(基于Java API)含log4j2配置
- 基于Guava API实现异步通知和事件回调
本文节选自<设计模式就该这样学> 1 基于Java API实现通知机制 当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景.有些小 ...
- WebDriver基本API使用(基于Java)V1.0
WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html
- WebDriver基本API使用手册(基于Java和C#)
WebDriver基本API使用手册(基于Java和C#) http://www.docin.com/p-747728551.html
- 转载 基于JAVA每月运势api调用代码实例
代码描述:基于JAVA每月运势api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/58 原文链接:http://outofmemory.cn/code-snip ...
随机推荐
- Colorbox - a jQuery lightbox
http://www.jacklmoore.com/colorbox/http://www.jacklmoore.com/colorbox/example5/ <script type=&quo ...
- Android自定义之流式布局
流式布局,好处就是父类布局可以自动的判断子孩子是不是需要换行,什么时候需要换行,可以做到网页版的标签的效果.今天就是简单的做了自定义的流式布局. 具体效果: 原理: 其实很简单,Measure La ...
- matlab练习程序(模糊集图像增强)
算法有很多变种.不过主要就是以下三步. 1.设计隶属度函数将图像从空间域变换到模糊集域. 2.设计模糊增强算子,在模糊集域对图像进行处理. 3.根据第1步的隶属度函数重新将图像从模糊集域变换到空间域. ...
- python多重继承
# 动物 Dog - 狗狗: Bat - 蝙蝠: Parrot - 鹦鹉: Ostrich - 鸵鸟. # 哺乳动物 鸟类 # 能跑 能飞 class Animal(object): pass # 大 ...
- tdf sample
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...
- sudo cat > EOF权限问题
sudo bash -c 'cat << EOF > /etc/yum.repos.d/some-name.repo line1 line2 line3 EOF'
- ul自适应li问题
内容提要: li浮动时ul高度为0,解决ul自适应高度的几种方法 在网页设计中,常常需要对li标签做浮动效果,但是在不同浏览器中会遇到兼容性问题,比如IE中会出现ul高度为0的情况,是效果不能达到预期 ...
- 长大Tips的第一步
任务进度:登陆界面的初步设计. 运行环境:windows10 编译环境:netbeans 编写语言:java 界面展示: 任务简介: 本次任务指示简单的完成了界面设计,登陆按钮暂未实现,持续更新中,敬 ...
- JVM原理:4 运行期优化
JVM运行期优化 Java程序在运行的期间,可能会有某个方法或者代码块的运行特别频繁时,就会把这些代码认定为“热点代码”.为了提高热点代码的执行效率,在运行时JVM会将这些代码编译成与本地平台相关的机 ...
- transform,animate
1.transform 用来定义变换 IE10及以上支持 示例:transform: rotate | scale | skew | translate |matrix; 一.旋转rotate 正数 ...