上代码:

 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实现的更多相关文章

  1. spark 中的RDD编程 -以下基于Java api

    1.RDD介绍:     RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动 ...

  2. 基于Java API for WebSocket (JSR-356)的标准websocket客户端

    maven依赖 springboot <dependency> <groupId>org.springframework.boot</groupId> <ar ...

  3. SpringMVC常用配置-Controller中的各种配置(基于Java API和注解)

  4. SpringMVC操作指南-MVC-搭建SpringMVC项目结构(基于Java API和注解)

  5. MyBatis操作指南-搭建项目基础环境(基于Java API)含log4j2配置

  6. 基于Guava API实现异步通知和事件回调

    本文节选自<设计模式就该这样学> 1 基于Java API实现通知机制 当小伙伴们在社区提问时,如果有设置指定用户回答,则对应的用户就会收到邮件通知,这就是观察者模式的一种应用场景.有些小 ...

  7. WebDriver基本API使用(基于Java)V1.0

    WebDriver基本API使用(基于Java)V1.0http://www.docin.com/p-803032877.html

  8. WebDriver基本API使用手册(基于Java和C#)

    WebDriver基本API使用手册(基于Java和C#) http://www.docin.com/p-747728551.html

  9. 转载 基于JAVA每月运势api调用代码实例

    代码描述:基于JAVA每月运势api调用代码实例 接口地址:http://www.juhe.cn/docs/api/id/58 原文链接:http://outofmemory.cn/code-snip ...

随机推荐

  1. c++sizeof大全

    sizeof,一个其貌不扬的家伙,引无数菜鸟竟折腰,小虾我当初也没少犯迷糊,秉着“辛苦我一个,幸福千万人”的伟大思想,我决定将其尽可能详细的总结一下.但当我总结的时候才发现,这个问题既可以简单,又可以 ...

  2. vuejs源码摘抄(二)

    创建一个用来观察对象的observe类,这个类会附加在被观察的对象上,并且把被观察对象的属性值转换成getter/setter,同时,收集依赖和分发更新,实现代码如下: /* * not type c ...

  3. HQL(Hibernate Query Language)

    1. NativeSQL > HQL > EJB QL(JP QL 1.0) > QBC(Query By Criteria) > QBE(Query By Example)2 ...

  4. python在Android下的自动化测试用法

    # This Python file uses the following encoding: utf-8from com.android.monkeyrunner import MonkeyRunn ...

  5. Microsoft Translator:打破语言障碍 拓展全球沟通新机遇

    作者:Olivier Fontana, 微软研究院Microsoft Translator产品战略总监 世界越来越小,全球协作.共同创新已经成为常态.在微软研究院,我们对此尤为感同身受——从北京到雷德 ...

  6. 启动PyCharm cannot start under Java 1.7 : Java 1.8 or later is required 解决方案

    1.安装jdk8 2.配置环境变量 JAVA_HOME : C:\Program Files (x86)\Java\jre1.8.0_144 java原本的环境变量配置不变,只修改JAVA_HOME

  7. Linux中如何安装配置Mysql和SVN服务端

    目标Linux系统为centOS 一.安装登陆mysql   1.直接以root用户运行:yum install mysql 和yum install mysql-server等带安装完成. 2.安装 ...

  8. Ubuntu 14.04默认以字符界面启动

    在windows上跑虚拟机比较资源,特别当以图形界面启动时,如果宿主机性能不好,就相当卡. 让Ubuntu 14.04默认以字符界面启动的方法: 编辑文件:etc/default/grub 将  GR ...

  9. ABAP OPEN SQL里OPEN CURSOR和SELECT的比较

    OPEN CURSOR After the OPEN CURSOR statement, the database cursor is positioned in front of the first ...

  10. 为什么ssh一关闭,程序就不再运行了?

    问题描述 当SSH远程连接到服务器上,然后运行一个程序,eg: ./test.sh, 然后把终端开闭(切断SSH连接)之后,发现该程序中断. 原因 主要元凶: 挂断信号(SIGHUP) 信号 概念介绍 ...