|
|
@@ -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;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|