java本地Cache缓存的使用
说明:
java本地缓存的使用,方便快捷
代码:
1、新建一个Cache实体
package com.jdc.cache;public class Cache { private String key;//缓存ID private Object value;//缓存数据 private long timeOut;//更新时间 private boolean expired; //是否终止 public Cache() { super(); } public Cache(String key, Object value, long timeOut, boolean expired) { this.key = key; this.value = value; this.timeOut = timeOut; this.expired = expired; } public String getKey() { return key; } public long getTimeOut() { return timeOut; } public Object getValue() { return value; } public void setKey(String string) { key = string; } public void setTimeOut(long l) { timeOut = l; } public void setValue(Object object) { value = object; } public boolean isExpired() { return expired; } public void setExpired(boolean b) { expired = b; }
}
2、管理缓存
package com.jdc.cache;
import java.util.HashMap;//Description: 管理缓存 //可扩展的功能:当chche到内存溢出时必须清除掉最早期的一些缓存对象,这就要求对每个缓存对象保存创建时间 public class CacheManager { private volatile static HashMap cacheMap ;//单实例构造方法 private CacheManager() { super(); } public static HashMap getCache() { if (cacheMap == null) { synchronized (HashMap.class) { if (cacheMap == null) { cacheMap = new HashMap(); } } } return cacheMap; }//得到缓存。同步静态方法 private synchronized static Cache getCache(String key) { return (Cache) getCache().get(key); } //判断是否存在一个缓存 public synchronized static boolean hasCache(String key) { return getCache().containsKey(key); } //获取缓存信息 public static Cache getCacheInfo(String key) { if (hasCache(key)) { Cache cache = getCache(key); if (cacheExpired(cache)) { //调用判断是否终止方法 cache.setExpired(true); return null;} return cache; }else return null; } //重写载入缓存信息方法 public static void putCacheInfo(String key,Object obj,long dt){ Cache cache = new Cache(); cache.setKey(key);if(dt<0){cache.setTimeOut(dt);}else {cache.setTimeOut(dt+System.currentTimeMillis());}cache.setValue(obj);cache.setExpired(false); getCache().put(key,cache); } //判断缓存是否终止 public static boolean cacheExpired(Cache cache) { if (null == cache) { //传入的缓存不存在 return false; } long nowDt = System.currentTimeMillis(); //系统当前的毫秒数 long cacheDt = cache.getTimeOut(); //缓存内的过期毫秒数 if (cacheDt <= 0||cacheDt>nowDt) { //过期时间小于等于零时,或者过期时间大于当前时间时,则为FALSE return false; } else { //大于过期时间 即过期 return true; } }}
3、测试缓存
package com.jdc.cache;public class Test {public static void main(String[] args){CacheManager.putCacheInfo("pda", "test", 1000*60*60);System.out.println("缓存已存入");Cache cache = CacheManager.getCacheInfo(String.valueOf("pda"));String value = (String)cache.getValue();System.out.println(value);}}
java本地Cache缓存的使用相关推荐
- java中Cache缓存的使用
java中Cache缓存 1.JSR107 缓存的整体架构: 2.SpringBoot的缓存抽象 几个重要概念以及缓存注解 其中想要使用缓存直接,就必须开启**@EnableCaching**注解 开 ...
- Java本地高性能缓存的几种实现方式
Java缓存技术可分为远端缓存和本地缓存,远端缓存常用的方案有著名的redis和memcache,而本地缓存的代表技术主要有HashMap,Guava Cache,Caffeine和Encahche. ...
- java本地定时缓存,单例可执行外部接口
环境: 有些对外提供的工具模块不是很好引用reids依赖,需要使用本地缓存,本来行想省事直接使用hutool的超时缓存-TimedCache,但是这个工具是真的坑逼,到时间调用get方法还是能获取到数 ...
- Caffeine Cache~高性能 Java 本地缓存之王
前面刚说到Guava Cache,他的优点是封装了get,put操作:提供线程安全的缓存操作:提供过期策略:提供回收策略:缓存监控.当缓存的数据超过最大值时,使用LRU算法替换.这一篇我们将要谈到一个 ...
- java本地缓存简介
java中的本地缓存,工作后陆续用到,一直想写,一直无从下手,最近又涉及到这方面的问题了,梳理了一下.自己构造单例.guava.ehcache基本上涵盖了目前的大多数行为了. 为什么要有本地缓存? 在 ...
- java本地缓存_java缓存——(五)LocalCache本地缓存分享
LocalCache本地缓存分享 前言 一.本地缓存应用场景 二.java本地缓存标准 三.java开源缓存框架 四.LocalCache实现 结束语 前言 本次分享探讨java平台的本地缓存,是指占 ...
- java 本地缓存框架_5个强大的Java分布式缓存框架推荐
在开发中大型Java软件项目时,很多Java架构师都会遇到数据库读写瓶颈,如果你在系统架构时并没有将缓存策略考虑进去,或者并没有选择更优的 缓存策略,那么到时候重构起来将会是一个噩梦.本文主要是分享了 ...
- 聊一聊JAVA中的缓存规范 —— 虽迟但到的JCache API与天生不俗的Spring Cache
为何需要规范 上一章中构建的最简化版本的缓存框架,虽然可以使用,但是也存在一个问题,就是它对外提供的实现接口都是框架根据自己的需要而自定义的.这样一来,项目集成了此缓存框架,后续如果想要更换缓存框架的 ...
- java cache缓存_涨姿势:为什么Java中“1000==1000”为false,而”100==100“为true?
为什么 Java 中"1000==1000"为false,而"100==100"为true? 这是一个挺有意思的讨论话题. 如果你运行下面的代码: Integ ...
最新文章
- 【随记】hexo文章加密
- Springboot整合RabbitMq-用心看完这一篇就够了(最新)
- mysql emoji 显示不出来_解决 Mysql 存取 emoji 表情的问题
- Teamcenter 入门开发系列问答(3)
- 【jQuery笔记Part1】12-jQuery元素的角标
- STM32F103基于固件库创建工程模板
- 高效记忆/形象记忆(13)110数字编码表 71-80
- BFS算法解题套路框架(附习题)
- window-批量创建文件夹
- keil函数和变量无法跳转到定义处的原因有哪些
- 电驴 链接不到服务器
- ArcGIS\QGIS无插件加载(无偏移)MapBox高清影像图
- 推广网店的12个秘诀
- 低频(LF)RFID 智能终端
- dedeCMS采集规则各大CMS采集规则通用
- 转:电子邮件的工作原理
- 施耐德Galaxy VX-数据中心模块化UPS的理想选择
- 数据库管理系统实验及答案
- 如何使用ArcGIS制作三维地形图
- bat脚本学习(一)