parent
0169d537ef
commit
a1e11ea190
@ -0,0 +1,112 @@
|
|||||||
|
package com.xxl.job.admin.core.util;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* local cache tool
|
||||||
|
*
|
||||||
|
* @author xuxueli 2018-01-22 21:37:34
|
||||||
|
*/
|
||||||
|
public class LocalCacheUtil {
|
||||||
|
|
||||||
|
private static ConcurrentHashMap<String, LocalCacheData> cacheRepository = new ConcurrentHashMap<>();
|
||||||
|
private static class LocalCacheData{
|
||||||
|
private String key;
|
||||||
|
private Object val;
|
||||||
|
private long timeoutTime;
|
||||||
|
|
||||||
|
public LocalCacheData() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public LocalCacheData(String key, Object val, long timeoutTime) {
|
||||||
|
this.key = key;
|
||||||
|
this.val = val;
|
||||||
|
this.timeoutTime = timeoutTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getKey() {
|
||||||
|
return key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setKey(String key) {
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Object getVal() {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setVal(Object val) {
|
||||||
|
this.val = val;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getTimeoutTime() {
|
||||||
|
return timeoutTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeoutTime(long timeoutTime) {
|
||||||
|
this.timeoutTime = timeoutTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* set cache
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @param val
|
||||||
|
* @param cacheTime
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean set(String key, Object val, long cacheTime){
|
||||||
|
if (StringUtils.isBlank(key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (val == null) {
|
||||||
|
remove(key);
|
||||||
|
}
|
||||||
|
if (cacheTime <= 0) {
|
||||||
|
remove(key);
|
||||||
|
}
|
||||||
|
long timeoutTime = System.currentTimeMillis() + cacheTime;
|
||||||
|
LocalCacheData localCacheData = new LocalCacheData(key, val, timeoutTime);
|
||||||
|
cacheRepository.put(localCacheData.getKey(), localCacheData);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* remove cache
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static boolean remove(String key){
|
||||||
|
if (StringUtils.isBlank(key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
cacheRepository.remove(key);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* get cache
|
||||||
|
*
|
||||||
|
* @param key
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Object get(String key){
|
||||||
|
if (StringUtils.isBlank(key)) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
LocalCacheData localCacheData = cacheRepository.get(key);
|
||||||
|
if (localCacheData!=null && System.currentTimeMillis()<localCacheData.getTimeoutTime()) {
|
||||||
|
return localCacheData.getVal();
|
||||||
|
} else {
|
||||||
|
remove(key);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in new issue