Преглед изворни кода

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

xuxueli пре 8 година
родитељ
комит
6ca29c0d17

+ 22 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java Прегледај датотеку

61
      * @return
61
      * @return
62
      */
62
      */
63
     public static boolean set(String key, Object val, long cacheTime){
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
         if (StringUtils.isBlank(key)) {
69
         if (StringUtils.isBlank(key)) {
65
             return false;
70
             return false;
66
         }
71
         }
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
 	@Override
325
 	@Override
326
 	public ReturnT<Map<String, Object>> triggerChartDate(Date startDate, Date endDate) {
326
 	public ReturnT<Map<String, Object>> triggerChartDate(Date startDate, Date endDate) {
327
 		// get cache
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
 		if (triggerChartDateCache != null) {
330
 		if (triggerChartDateCache != null) {
330
 			return new ReturnT<Map<String, Object>>(triggerChartDateCache);
331
 			return new ReturnT<Map<String, Object>>(triggerChartDateCache);
331
 		}
332
 		}
376
 		result.put("triggerCountFailTotal", triggerCountFailTotal);
377
 		result.put("triggerCountFailTotal", triggerCountFailTotal);
377
 
378
 
378
 		// set cache
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
 		return new ReturnT<Map<String, Object>>(result);
382
 		return new ReturnT<Map<String, Object>>(result);
382
 	}
383
 	}