diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java index 76bd23e4..3a0ec942 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/util/LocalCacheUtil.java @@ -61,6 +61,11 @@ public class LocalCacheUtil { * @return */ public static boolean set(String key, Object val, long cacheTime){ + + // clean timeout cache, before set new cache (avoid cache too much) + cleanTimeutCache(); + + // set new cache if (StringUtils.isBlank(key)) { return false; } @@ -109,4 +114,21 @@ public class LocalCacheUtil { } } + /** + * clean timeout cache + * + * @return + */ + public static boolean cleanTimeutCache(){ + if (!cacheRepository.keySet().isEmpty()) { + for (String key: cacheRepository.keySet()) { + LocalCacheData localCacheData = cacheRepository.get(key); + if (localCacheData!=null && System.currentTimeMillis()>=localCacheData.getTimeoutTime()) { + cacheRepository.remove(key); + } + } + } + return true; + } + } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index b31a42c0..0ad2e2df 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java @@ -325,7 +325,8 @@ public class XxlJobServiceImpl implements XxlJobService { @Override public ReturnT> triggerChartDate(Date startDate, Date endDate) { // get cache - Map triggerChartDateCache = (Map) LocalCacheUtil.get(TRIGGER_CHART_DATA_CACHE); + String cacheKey = TRIGGER_CHART_DATA_CACHE + "_" + startDate.getTime() + "_" + endDate.getTime(); + Map triggerChartDateCache = (Map) LocalCacheUtil.get(cacheKey); if (triggerChartDateCache != null) { return new ReturnT>(triggerChartDateCache); } @@ -376,7 +377,7 @@ public class XxlJobServiceImpl implements XxlJobService { result.put("triggerCountFailTotal", triggerCountFailTotal); // set cache - LocalCacheUtil.set(TRIGGER_CHART_DATA_CACHE, result, 60*1000); // cache 60s + LocalCacheUtil.set(cacheKey, result, 60*1000); // cache 60s return new ReturnT>(result); }