ソースを参照

报表缓存Key优化,支持以时间为粒度缓存;

xuxueli 8 年 前
コミット
6ca29c0d17

+ 22 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java ファイルの表示

@@ -61,6 +61,11 @@ public class LocalCacheUtil {
61 61
      * @return
62 62
      */
63 63
     public static boolean set(String key, Object val, long cacheTime){
64
+
65
+        // clean timeout cache, before set new cache (avoid cache too much)
66
+        cleanTimeutCache();
67
+
68
+        // set new cache
64 69
         if (StringUtils.isBlank(key)) {
65 70
             return false;
66 71
         }
@@ -109,4 +114,21 @@ public class LocalCacheUtil {
109 114
         }
110 115
     }
111 116
 
117
+    /**
118
+     * clean timeout cache
119
+     *
120
+     * @return
121
+     */
122
+    public static boolean cleanTimeutCache(){
123
+        if (!cacheRepository.keySet().isEmpty()) {
124
+            for (String key: cacheRepository.keySet()) {
125
+                LocalCacheData localCacheData = cacheRepository.get(key);
126
+                if (localCacheData!=null && System.currentTimeMillis()>=localCacheData.getTimeoutTime()) {
127
+                    cacheRepository.remove(key);
128
+                }
129
+            }
130
+        }
131
+        return true;
132
+    }
133
+
112 134
 }

+ 3 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java ファイルの表示

@@ -325,7 +325,8 @@ public class XxlJobServiceImpl implements XxlJobService {
325 325
 	@Override
326 326
 	public ReturnT<Map<String, Object>> triggerChartDate(Date startDate, Date endDate) {
327 327
 		// get cache
328
-		Map<String, Object> triggerChartDateCache = (Map<String, Object>) LocalCacheUtil.get(TRIGGER_CHART_DATA_CACHE);
328
+		String cacheKey = TRIGGER_CHART_DATA_CACHE + "_" + startDate.getTime() + "_" + endDate.getTime();
329
+		Map<String, Object> triggerChartDateCache = (Map<String, Object>) LocalCacheUtil.get(cacheKey);
329 330
 		if (triggerChartDateCache != null) {
330 331
 			return new ReturnT<Map<String, Object>>(triggerChartDateCache);
331 332
 		}
@@ -376,7 +377,7 @@ public class XxlJobServiceImpl implements XxlJobService {
376 377
 		result.put("triggerCountFailTotal", triggerCountFailTotal);
377 378
 
378 379
 		// set cache
379
-		LocalCacheUtil.set(TRIGGER_CHART_DATA_CACHE, result, 60*1000);     // cache 60s
380
+		LocalCacheUtil.set(cacheKey, result, 60*1000);     // cache 60s
380 381
 
381 382
 		return new ReturnT<Map<String, Object>>(result);
382 383
 	}