首页 / 缓存 / Java 内存缓存工具类
Java 内存缓存工具类
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java 内存缓存工具类,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2232字,纯文字阅读大概需要4分钟。
内容图文
![Java 内存缓存工具类](/upload/InfoBanner/zyjiaocheng/955/59baacdb8f5642a9a4314c6f5f37fa18.jpg)
/**
*
*/
package cn.xdl.utils.common;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/**
* @author liurui
* @date 2019年8月27日
*/
public class EasyCacheUtil {
// 缓存map
private static Map<String, Object> cacheMap = new HashMap<String, Object>();
// 缓存有效期map
private static Map<String, Long> expireTimeMap = new HashMap<String, Long>();
/**
* 获取指定的value,如果key不存在或者已过期,则返回null
* @param key
* @return
*/
public static Object get(String key) {
if (!cacheMap.containsKey(key)) {
return null;
}
if (expireTimeMap.containsKey(key)) {
if (expireTimeMap.get(key) < System.currentTimeMillis()) { // 缓存失效,已过期
return null;
}
}
return cacheMap.get(key);
}
/**
* @param key
* @param <T>
* @return
*/
@SuppressWarnings({ "unchecked" })
public static <T> T getT(String key) {
Object obj = get(key);
return obj == null ? null : (T) obj;
}
/**
* 设置value(不过期)
* @param key
* @param value
*/
public static void set(String key, Object value) {
cacheMap.put(key, value);
}
/**
* 设置value
* @param key
* @param value
* @param millSeconds 过期时间(毫秒)
*/
public static void set(final String key, Object value, int millSeconds) {
final long expireTime = System.currentTimeMillis() + millSeconds;
cacheMap.put(key, value);
expireTimeMap.put(key, expireTime);
if (cacheMap.size() > 2) { // 清除过期数据
new Thread(new Runnable() {
public void run() {
// 此处若使用foreach进行循环遍历,删除过期数据,会抛出java.util.ConcurrentModificationException异常
Iterator<Map.Entry<String, Object>> iterator = cacheMap.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<String, Object> entry = iterator.next();
if (expireTimeMap.containsKey(entry.getKey())) {
long expireTime = expireTimeMap.get(key);
if (System.currentTimeMillis() > expireTime) {
iterator.remove();
expireTimeMap.remove(entry.getKey());
}
}
}
}
}).start();
}
}
/**
* key是否存在
* @param key
* @return
*/
public static boolean isExist(String key) {
return cacheMap.containsKey(key);
}
public static void main(String[] args) {
EasyCacheUtil.set("testKey_1", "testValue_1");
EasyCacheUtil.set("testKey_2", "testValue_2", 1);
EasyCacheUtil.set("testKey_3", "testValue_3");
EasyCacheUtil.set("testKey_4", "testValue_4", 1);
Object testKey_2 = EasyCacheUtil.get("testKey_2");
System.out.println(testKey_2);
}
}
内容总结
以上是互联网集市为您收集整理的Java 内存缓存工具类全部内容,希望文章能够帮你解决Java 内存缓存工具类所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。